Мне очень любопытно, почему мы должны использовать java.awt.EventQueue.invokeLater
для управления компонентами swing.
Почему мы не можем сделать это в обычной теме? Что именно происходит за кулисами? Из того, что я заметил, если у меня есть JFrame
, я могу установить видимость в true или false из основного потока без каких-либо ошибок, и он, похоже, работает. Итак, что именно я могу достичь, используя java.awt.EventQueue.invokeLater
? Я также полностью понимаю, что я могу использовать SwingUtilities.invokeLater
, но как здесь объясняется, они кажутся одним и тем же.
Спасибо всем за их объяснение. Надеюсь, это правильный вопрос.
РЕДАКТИРОВАТЬ: ответить на вопрос wumpz Мы можем создать jframe
JFrame frame = new JFrame("Hello world");
frame.setSize(new Dimension(300, 300));
frame.setPreferredSize(new Dimension(300, 300));
frame.setMaximumSize(new Dimension(300, 300));
frame.setMinimumSize(new Dimension(300, 300));
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
И в том же потоке он был создан, чтобы сделать следующее.
for (int i = 0; i < 34; i++)
{
System.out.println("Main thread setting to "+(!frame.isVisible()));
frame.setVisible(!frame.isVisible());
}
И никаких жалоб.