Запустите фоновую тему, используя JButton - PullRequest
0 голосов
/ 18 мая 2018

Я не уверен в Java, но я разрабатываю инструмент для мониторинга серверных жестких дисков нашей компании из-за некоторых проблем, с которыми мы сталкиваемся.

Я создавал простой фрейм с простым меню иJPanel с некоторой информацией, но это не важно.

Моя идея проста: нажмите JButton из JFrame, затем мой сервис (который является классом, расширяет Thread и спит).какое-то время начинается каждый цикл).Я создал все классы, но у меня есть такая проблема: когда я нажимаю кнопку, запускается класс фона, но я теряю контроль над основным кадром.

Как я могу разделить класс кадра между моим классом фона?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Не могли бы вы предоставить больше информации?Но для того, что я понял, вы должны добавить слушателя событий в свой JButton.Пример кода:

    BackGroundThread task = new BackGroundThread();
    JButton btn = new JButton("Run task");
    btn.addActionListener(new ActionListener() {            
           public void actionPerformed(ActionEvent arg0) {
            task.start();
        }
    });        
0 голосов
/ 18 мая 2018

тогда мой сервис (который является классом, расширяет поток и спит какое-то время в каждом цикле) запускается.Я сделал все классы, но у меня есть эта проблема: когда я нажимаю свой JButton, фоновый класс запускается, но я теряю контроль над основным JFrame.

Не совсем уверен, что "свободный контроль надОсновное JFrame "означает.Но я предполагаю, что он больше не реагирует на пользовательские события.

Это может быть связано с тем, что ваш Thread.sleep заставляет Event Dispatch Thread (EDT) спать, поэтому вы либо:

  1. неправильное создание потока или
  2. спящего неправильного потока.

В любом случае я бы предложил, чтобы в ActionListener вы добавили к своей кнопке запуск SwingWorker.SwingWorker создаст для вас тему и позволит вам правильно общаться с фреймом.

Прочтите раздел из учебника по Swing по Параллельность для получения дополнительной информации и примеров, с чего можно начать.Учебник объяснит больше о EDT.

...