Java Swing : why must resize frame, so that can show components have added(Java Swing:为什么必须调整框架大小,这样才能显示组件已添加)
问题描述
我有一个简单的 Swing GUI.(不仅如此,我写的所有摇摆GUI).运行它时,除了空白屏幕,它什么都不显示,直到我调整主框架的大小,所以每个组件都重新绘制,我可以显示它们.
I have a simple Swing GUI. (and not only this, all swing GUI I have written). When run it, it doesn't show anything except blank screen, until I resize the main frame, so every components have painted again, and I can show them.
这是我的简单代码:
public static void main(String[] args) {
JFrame frame = new JFrame("JScroll Pane Test");
frame.setVisible(true);
frame.setSize(new Dimension(800, 600));
JTextArea txtNotes = new JTextArea();
txtNotes.setText("Hello World");
JScrollPane scrollPane = new JScrollPane(txtNotes);
frame.add(scrollPane);
}
所以,我的问题是:当我开始这个课程时,框架会出现我添加的所有组件,直到我调整框架大小.
So, my question is : how can when I start this class, the frame will appear all components I have added, not until I resize frame.
谢谢:)
推荐答案
JFrame
可见后不要向JFrame
添加组件(setVisible(true)
)Do not add components to
JFrame
after theJFrame
is visible (setVisible(true)
)在框架上调用
setSize()
而不是调用pack()
并不是很好的做法(导致JFrame
的大小调整为适合其子组件的首选大小和布局)并让LayoutManager
处理大小.Not really good practice to call
setSize()
on frame rather callpack()
(CausesJFrame
to be sized to fit the preferred size and layouts of its subcomponents) and letLayoutManager
handle the size.使用 EDT (Event-Dispatch-线程)
Use EDT (Event-Dispatch-Thread)
调用
JFrame#setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
正如@Gilbert Le Blanc(对他 +1)所说,否则即使在之后,您的 EDT/Initial 线程仍将保持活动状态JFrame
已关闭call
JFrame#setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
as said by @Gilbert Le Blanc (+1 to him) or else your EDT/Initial thread will remain active even afterJFrame
has been closed像这样:
public static void main(String[] args) { //Create GUI on EDT Thread SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame("JScroll Pane Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTextArea txtNotes = new JTextArea(); txtNotes.setText("Hello World"); JScrollPane scrollPane = new JScrollPane(txtNotes); frame.add(scrollPane);//add components frame.pack(); frame.setVisible(true);//show (after adding components) } }); }
这篇关于Java Swing:为什么必须调整框架大小,这样才能显示组件已添加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java Swing:为什么必须调整框架大小,这样才能显示组件已添加


基础教程推荐
- 如何在 Spring @Value 注解中正确指定默认值? 2022-01-01
- 如何在 JFrame 中覆盖 windowsClosing 事件 2022-01-01
- 大摇大摆的枚举 2022-01-01
- 多个组件的复杂布局 2022-01-01
- 在 Java 中创建日期的正确方法是什么? 2022-01-01
- 从 python 访问 JVM 2022-01-01
- Java 实例变量在两个语句中声明和初始化 2022-01-01
- 验证是否调用了所有 getter 方法 2022-01-01
- Java Swing计时器未清除 2022-01-01
- 不推荐使用 Api 注释的描述 2022-01-01