【发布时间】:2021-03-08 22:53:49
【问题描述】:
我正在练习 Swing 布局。 我求JFrame的实际大小与size Dimension不匹配
import java.awt.*;
import javax.swing.*;
public class GridRanFruit {
public GridRanFruit() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(600, 600));
frame.setLayout(null);
JPanel primary = new JPanel();
primary.setBounds(new Rectangle(0, 0, 600, 600));
primary.setLayout(new GridLayout(4, 4));
JPanel panels[][] = new JPanel[4][4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
JPanel panel = new JPanel();
panel.setBackground(Color.gray);
primary.add(panel);
panels[i][j] = panel;
}
}
int ranSeed = (int) (Math.random() * 16);
panels[ranSeed/4][ranSeed%4].setBackground(Color.green);
frame.getContentPane().add(primary);
frame.pack();
frame.setVisible(true);
}
}
您可以从下面的图片中找到小错误。怎么解决呢?
我正在使用setPerferredSize 方法。
这意味着JFrame 的大小与JPanel 不匹配,尽管大小相同
【问题讨论】:
-
设置 JFrame 的 contentPane 的首选大小,而不是 JFrame 本身。
-
避免使用
null布局,这些只会给您带来问题。请记住,窗户装饰包含在窗户的边界内,因此您的可用空间将是窗户边界减去窗户装饰插图。
标签: java swing jframe components jpanel