【问题标题】:Java getheight() and getWidth() of inner panel without set it to fix size内部面板的 Java getheight() 和 getWidth() 未设置为固定大小
【发布时间】: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


【解决方案1】:

您的面板没有尺寸。 您应该设置面板的大小

redPanel.setSize(600, 600);
bluePanel.setSize(600, 600);

或获取帧大小

    System.out.println("frame.getHeight() = " + frame.getHeight()); 
    System.out.println("frame.getWidth() = " + frame.getWidth()); 

【讨论】:

  • “你应该设置你的面板大小” 不,你不应该这样做,尤其是当问题在标题中声明时 “。 .panel 没有设置为固定大小".
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多