где SwingWorker должен быть в классе

1

У меня 2 класса. Один для графического интерфейса пользователя и пыльник для чтения файла с его обновлением, JTable, но это занимает много времени. Я хотел бы использовать SwingWorker для устранения проблемы. Я нашел учебники, подобные этому SwingWorker, но все же я его не понимаю. где я должен использовать SwingWorker; это в классе чтения или классе GUI, я никогда не пытаюсь это сделать, и я ничего не знаю об этом; Я пытался каждый раз искать google, но мне нужен очень простой пример "самый простой" в другом слове, где начинать

  • 0
    Работали ли вы с этим руководством: docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html ?
  • 0
    это верно, у меня есть класс для чтения информации о файле, и это займет много времени, мне нужен SwingWorker, но Sun дает мне длинный учебник, чтобы сказать, что вы заблудились
Показать ещё 1 комментарий
Теги:
swingworker

1 ответ

0
Лучший ответ

Вот минимальный пример. Это программа, показывающая фиктивный прогресс в 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!");
        }
     }

 }
  • 0
    спасибо но какой первый <String, String> можешь дать больше объяснений
  • 0
    Класс SwingWorker является универсальным (т. Е. SwingWorker <T, V>). Из API: T - тип результата, возвращаемый этим doingBackground SwingWorker и методы get V - тип, используемый для выполнения промежуточных результатов методами публикации и обработки этого SwingWorker
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню