В моем приложении java swing есть Jframe и Jlabel для отображения текущего времени. Здесь я использую поток для отображения времени в jlablel, который добавляется в frame.my сомнение в том, что когда я удаляю jframe, что произойдет с потоком, будет ли он работать или останавливаться.java swing thread problem
ответ
Если вы не отметили свою нить как демона, позвонив по номеру yourThread.setDaemon(true)
, он будет продолжать работать, даже если основной поток в вашем приложении завершен. Помните, что вам нужно позвонить setDaemon
перед началом темы.
Обратитесь к моему answer в какой-либо предыдущий вопрос для деталей.
Правильный способ в вашем случае, я считаю, будет поддерживать флаг «стоп», который отслеживается вашим потоком таймера. Поток таймера должен выйти при чтении этого флага как «false». Вы можете добавить WindowListener к вашему JFrame и на закрытом окне событий установите флажок «стоп» в истинной
Heres пример кода для того, что я предлагаю:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class JFrameTest {
public static void main(String[] args) {
final Timer t = new Timer();
t.start();
JFrame jf = new JFrame("GOPI");
jf.setVisible(true);
jf.setSize(100, 100);
jf.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
t.stopTimer();
}
});
System.out.println("JFrameTest.main() DONE");
}
}
class Timer extends Thread {
boolean stop = false;
@Override
public void run() {
for (int i = 0; i < 50; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (stop)
break;
System.out.println("Counting :" + i);
}
System.out.println("Timer exit");
}
public void stopTimer() {
stop = true;
}
}
Ваш поток будет продолжать работать.
Вам необходимо либо сделать так, как предложено Гопи, или вы можете использовать System.exit(0)
в непосредственной близости от вашего JFrame.
ПРИМЕЧАНИЕ. Я предполагаю, что ваше приложение должно завершиться, если этот кадр закрыт.
Нет, я не могу позвонить в system.exit (0), он закроет мое приложение. Мне нужно избавиться от jframe и показать новую jframe в течение нескольких секунд. – Lalchand
- 1. java thread problem
- 2. Java Swing GUI - Problem
- 3. Java Swing Problem
- 4. Java Swing Thread Library
- 5. java swing thread callback
- 6. Swing Event Thread Java
- 7. Java Swing transparent JPanels problem
- 8. Java: Swing Libraries & Thread Safety
- 9. Операции Java в Swing thread
- 10. Бар Прогресс Thread (Java Swing)
- 11. Java Swing and Thread sleep
- 12. Swing - windowStateChanged event problem
- 13. Swing-focus problem
- 14. Swing thread communication
- 15. Swing Thread Безопасное программирование
- 16. eli5 swing worker и swing thread
- 17. wpf thread problem update ui
- 18. Swing Threads: Event dispatch Thread
- 19. java socket program problem
- 20. Swing concurrency and Event-Dispatch Thread
- 21. java swing checkboxes java swing
- 22. java jama matrix problem
- 23. ValidationAPI java swing
- 24. Ошибка Java Thread, но Swing все еще работает
- 25. scala, swing: thread issue with Event Dispatch Thread (актеры)
- 26. Java Swing Movement Stutter
- 27. Java Threading - Swing app
- 28. Java Casting Problem
- 29. java string matching problem
- 30. Java JMenu setAccelerator() problem
и в чем проблема? – Roman
Свободная нить - проблема. – kgiannakakis
@Roman память выпуск. – Lalchand