我正在制作一个大小为500x500像素的JFrame。 我做了一个蓝色背景,并在右下角添加了一个红色正方形(490,490)到(500,500)。
图片:
我没有看到屏幕上的红色方块。 我将框架从不可调整大小切换到可调整大小,如果我使窗口变大,则红点就在那里。 框架大小是否与应用程序的窗口大小相同? 如何使应用程序的窗口正好是500x500?
答案 0 :(得分:1)
您的内容窗格应覆盖getPreferredSize()方法,返回宽度和高度为500像素的Dimension对象:
public class MyContentPane extends JPanel {
private Dimension dimension;
public MyContentPane() {
this.dimension = new Dimension(500, 500);
}
@Override
public Dimension getPreferredSize() {
return this.dimension;
}
}
// How to use your new class
SwingUtils.invokeLater(() -> {
JFrame frame = new JFrame("Title");
frame.setContentPane(new MyContentPane());
frame.pack();
frame.setVisible(true);
});
JFrame的大小将由Swing计算,考虑其中组件的首选大小。
答案 1 :(得分:0)
框架是整个窗口的大小,包括操作系统所需的标题栏。在JPanel
中的JFrame
中绘制内容时,如果JPanel
位于标题栏下方,则(0,0)坐标位于左上角。听起来你的标题栏高于10像素,因此490作为y组件实际上是在窗外,因为JPanel
的可见高度为windowHeight - titleBarHeight
。
答案 2 :(得分:0)
是否应该使用以下
@Override
PreferedSize()
记住preferedSize方法是超类JFrame的方法。
答案 3 :(得分:0)
这可能对你有用吗?
JPanel aa = new JPanel(new GridBagLayout());
aa.setMaximumSize(new Dimension(500,500));
aa.setMinimumSize(new Dimension(490,490));
aa.setBorder(BorderFactory.createLineBorder(Color.black));