我想我有一个简单的问题,你应该知道如何解决.. 我正在尝试这样做: 我有一个 JFrame。 然后我创建一个 JPanel 并将其布局设置为 GridLayout(5,5) 最后,我将此 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??
}
提前非常感谢大家!!!!
最佳答案
面板的大小取决于其布局。特别是当它们被显示并且 doLayout() 被调用时。 doLayout() 根据面板的内容和有效的布局管理器计算出适合面板的大小。由于您的面板中没有任何内容,因此适当的大小是 0, 0。
如果面板中永远不会有任何内容,并且想要绕过此 (0, 0) 大小,则可以重写面板的 getPreferredSize() 以返回您希望面板遵循布局的尺寸。
关于swing - JFrame Container 内JPanel 的宽度和高度为0,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263351/