2011-11-24 122 views
2

我有一个简单的问题,我想,你应该知道如何解决.. 我想要做到这一点: 我有一个JFrame。 然后我创建一个JPanel并将其布局设置为GridLayout(5,5) Finnaly我将此JPanel添加到JFrame的容器中。JFrame容器中JPanel的宽度和高度为0,为什么?

当我试图获得我的面板的宽度它不应该给我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?? 
    } 

非常感谢提前球员!!!!

回答

3

面板的大小根据其布局而定。特别是当它们被显示并且doLayout()被调用时。 doLayout()会根据面板的内容和布局管理器计算出面板的合适大小。由于您的面板没有任何内容,因此适当的大小为0,0。

如果在面板中永远不会有任何东西,并且想要规避此(0,0)大小,则可以重写getPreferredSize()面板返回希望面板尊重布局的大小。

+0

感谢您的快速回复!但看起来我尝试在我的标签之前添加到面板,然后尝试获得尺寸..但仍然是零.. 看我的代码在这里队友:http://pastebin.com/FEtFnK9r 非常感谢;) – TiagoM

+1

doLayout仅在窗口可见时调用。除非我错过了它,否则确保在检查大小之前调用setVisible(true)。 – MeBigFatGuy

+0

固定感谢队友; D – TiagoM

相关问题