【发布时间】:2019-04-30 09:11:25
【问题描述】:
我想获取内面板的高度和宽度。 我使用 Miglayout 将高度和宽度设置为 100%。 当我运行我的代码时,我的高度和宽度都为零。
class MiglayoutExample extends JFrame {
static JFrame frame;
public static void main(String[] args) {
frame = new JFrame("frame");
JPanel bluePanel = new JPanel();
bluePanel.setLayout(new MigLayout());
bluePanel.setBackground(Color.BLUE);
JPanel redPanel = new JPanel();
redPanel.setBackground(Color.RED);
bluePanel.add(redPanel, "width 100%, height 100%");
frame.add(bluePanel);
frame.setSize(600, 600);
System.out.println("bluePanel.getHeight() = " + bluePanel.getHeight()); //Output 0
System.out.println("bluePanel.getWidth() = " + bluePanel.getWidth()); //Output 0
System.out.println("redPanel.getHeight() = " + redPanel.getHeight()); //Output 0
System.out.println("redPanel.getWidth() = " + redPanel.getWidth()); //Output 0
frame.show();
}
}
【问题讨论】:
-
您的面板可能要等到显示框架后才能获得它们的尺寸。尝试在
frame.show();之后移动你的输出语句 -
"frame.setSize(600, 600);" 我们通常更关心框架中内容的大小,而不是框架本身的大小。面板的装饰或“镀铬”为尺寸增加了更多像素,这将根据平台和(有时)外观而改变。
标签: java swing jpanel awt layout-manager