gpt4 book ai didi

java - 如何在另一个进程开始之前绘制jrame组件

转载 作者:行者123 更新时间:2023-12-02 00:00:48 25 4
gpt4 key购买 nike

private void addSomeComponentsToFrame(){
JFrame frame = new JFrame();
.....
frame.setVisible(true);

frame.getContentPane().validate();
frame.getContentPane().repaint();

runOtherTask();
}

我想在 runOtherTask 方法启动之前查看框架对象及其组件,但是当我尝试运行 addSomeComponentsToFrame 方法时,框架出现(作为黑色矩形)但卡住,并且在 runOtherTask 方法完成后,它在屏幕上显示框架的组件。

最佳答案

when i try to run addSomeComponentsToFrame method, frame appears(as black rectangle) but freezes and after runOtherTask method completes it shows frame's components on screen.

听起来您正在阻止 Event Dispatch Thread具有长时间运行的任务。

您可能希望将该任务从 EDT 卸载到单独的线程:

如果你在runOtherTask中操作Swing组件,最好使用:

否则您可以使用(请注意,下面的代码不会在 GUI Event Dispatch Thread 中运行,因此不允许在其中操作 Swing 组件):

只是作为旁注,不需要:

frame.getContentPane().validate();
frame.getContentPane().repaint();

简单地说:

frame.validate();
frame.repaint();

此外,如果您的 Java 版本允许使用 revalidate() 而不是 validate()。但只有在从可见容器中添加/删除组件时,这些才是必需的。

关于java - 如何在另一个进程开始之前绘制jrame组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14897066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com