У меня 2 класса. Один для графического интерфейса пользователя и пыльник для чтения файла с его обновлением, JTable
, но это занимает много времени. Я хотел бы использовать SwingWorker
для устранения проблемы. Я нашел учебники, подобные этому SwingWorker, но все же я его не понимаю. где я должен использовать SwingWorker
; это в классе чтения или классе GUI, я никогда не пытаюсь это сделать, и я ничего не знаю об этом; Я пытался каждый раз искать google, но мне нужен очень простой пример "самый простой" в другом слове, где начинать
Вот минимальный пример. Это программа, показывающая фиктивный прогресс в JLabel
:
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
public class GUI extends JFrame {
private JLabel lblProgress = new JLabel("0%");
public GUI() {
setTitle("Swing worker example");
setSize(300, 200);
add(lblProgress);
new Process().execute();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
GUI gui = new GUI();
gui.setVisible(true);
}
});
}
class Process extends SwingWorker<String, String> {
@Override
protected String doInBackground() throws InterruptedException {
int count = 10000;
for (int i = 0; i < count; i++) {
int progress = (int) ((double) i/count*100.0);
lblProgress.setText(progress + "%");
repaint();
Thread.sleep(10);
}
return null;
}
@Override
protected void done() {
lblProgress.setText("Finished!");
}
}
}