2010-12-31 3 views
0

Привет я пытаюсь создать мульти JFrames, но я хочу, чтобы каждый для имеет свою собственную тему (цикл обработки сообщений), поэтому, когда один JFrame замерзает остальные будут продолжать работатьСоздание JFrame в новом Thread (новый messageloog)

Я попытался создать каждый jframe из разных потоков, но они все еще работают в потоке AWT-EventQueue-0.

Я родом из точечного фона. поэтому, когда я хочу сделать этот сценарий в приложении WinForms я обычно называют Application.run(new form()) из нового потока

может у пожалуйста, скажите мне, как это сделать в Java?

благодарит заранее!

ответ

0

Создайте новую тему для каждого сгенерированного JFrame. Обратите внимание на переменные Thread и передайте их на Runnable.

+0

Я пробовал, и он не работает. У меня все еще есть только один цикл сообщений «AWT-EventQueue-0». Поэтому, когда один JFrame замерзает, остальные замораживают до –

2

В Java есть только поток пользовательского интерфейса, независимо от того, сколько кадров вы открываете. Я предлагаю вам выполнить длительную операцию в потоке.

public void actionPerformed(ActionEvent e) 
{ 
    new Thread(new FrameRunnable()).start(); 
} 

public class FrameRunnable implements Runnable 
{ 
    public void run() 
    { 
     // Do stuff here 
    } 
} 

Надеюсь, это поможет.

+0

, спасибо, я думаю, это единственная работа. Но я удивлен, что такой функции не существует в java :( –

1

Прочтите раздел из учебника Swing по телефону Concurrency, чтобы понять, как работает Event Dispatch Thread. Все обновления компонентов GUI должны выполняться на EDT. Если у вас есть длительные задачи, вы можете использовать SwingWorker или отдельный Thread вместе с SwingUtilities.invoke (...) позже, чтобы добавить код в EDT.

Смежные вопросы