java - 如何使 JPanel 大小适用于 JFrame?
问题描述
我对JPanel
不增加 a trhe 大小的大小有疑问JFrame
。
这是我的代码:
package pong;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(500, 500));
frame.add(p);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
}
}
尽管面板的首选尺寸是 500 x 500 像素,但框架显示的宽度或高度都很小。
解决方案
JFrame 以很小的宽度或高度显示,
代码应该是:
frame.pack(); // added
frame.setVisible(true);
该pack()
方法将调用框架使用的布局管理器,所有 Swing 组件都将以其首选大小显示。
此外,作为一般规则,不需要手动设置面板的首选尺寸,因为您将向面板添加组件,因此首选尺寸应基于您添加到面板的组件。
阅读 Swing 教程中有关使用布局管理器的部分以获取更多信息和示例。
推荐阅读
- python-3.x - 如何使用 VS python Jupiter 单元打开 csv 文件
- firebase - Flutter build 给出 .pub-cache cloud firestore 错误
- c++ - 如何在 C++17 中为通用嵌套容器编写函数?
- java - popBackStack() 返回相同的片段
- node.js - TypeError: io.of(...).sockets.get 不是函数
- powerbuilder - 无法连接到 Oracle 9 (Powerbuilder 12.5) - ORA-12154 错误
- vbscript - 如何摆脱退出 MS ACCESS 的提示
- python - Pip freeze 没有列出所有必需的包
- html - 重新加载 div 会删除它并且不显示任何内容
- unit-testing - Mockito/Spock MissingMethodInvocationException