我有一个Swing JFrame.如果我在程序执行期间在新线程中创建一个新的JFrame,那将是EDT?在最后一个JFrame窗口的当前线程中或在第一个窗口中.
编辑:谢谢你的回答.
我理解他们,我很好.我知道我们不必在EDT的其他地方创造摆动对象,但我遇到了问题.
我解释; 我开发了一个用于创建和提取存档的JAVA应用程序,如winrar.您可以使用多线程同时创建多个arhive.最近,我希望在每次创建时在JprogressBar形式的JprogressBar中添加信息状态.但我的问题是在新的状态框架和创建存档的线程中生成通信.这就是为什么我在存档线程中创建JFrame以更新当前的进度条.
但就像我可以在潜水员信息源和你的答案/评论中阅读它,它反对java摇摆和性能; 我无法在EDT的其他地方创建摆动对象.
但那么,我该如何解决我的问题呢?
EDT - 事件派发线程 - 与任何具体的GUI组件(例如JFrame)分开.
通常,您应该在EDT上创建所有GUI组件,但这并不意味着它们拥有EDT,EDT也不拥有组件.
要在EDT上创建两个JFrame,您可以执行以下操作:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame1 = new JFrame("Frame 1");
frame1.getContentPane().add(new JLabel("Hello in frame 1"));
frame1.pack();
frame1.setLocation(100, 100);
frame1.setVisible(true);
}
});
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame2 = new JFrame("Frame 2");
frame2.getContentPane().add(new JLabel("Hello in frame 2"));
frame2.pack();
frame2.setLocation(200, 200);
frame2.setVisible(true);
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |