JFrame容器内JPanel的宽度和高度为0,为什么?

时间:2011-11-24 23:13:54

标签: swing height width jpanel grid-layout

我想有一个简单的问题,你应该知道如何解决.. 我想这样做: 我有一个JFrame。 然后我创建一个JPanel并将他的布局设置为GridLayout(5,5) Finnaly我将这个JPanel添加到我的JFrame的容器中。

当我试图获得我的面板宽度时,它不应该给我0对吗? 我这样做:System.out.println(mypanel.getSize()。getWidth());它说是零:c 为什么? 我想知道尺寸,所以我可以划分每5,并知道每个标签涂多少,这将是一个标签网格.. 非常感谢...

    public janela(){

    window = new JFrame("teste");
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(300,300);
    contentor = window.getContentPane();
    interior = new JPanel();
    interior.setLayout(new GridLayout(5,5));
    contentor.add(interior);

    System.out.println(interior.getSize().getWidth());   //it says 0 ?!?! why??
     }

非常感谢大家!!!!

1 个答案:

答案 0 :(得分:3)

面板根据其布局进行调整。特别是当它们被显示并且为你调用doLayout()时。 doLayout()根据面板的内容和有效的布局管理器确定面板的适当大小。由于您的面板中没有任何内容,因此适当的大小为0,0。

如果面板中永远不会有任何内容,并且想要绕过这个(0,0)大小,则可以覆盖面板的getPreferredSize()以返回您希望面板尊重布局的大小。