2

我想我有一个简单的问题,你应该知道如何解决.. 我正在尝试这样做:我有一个 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??
     }

非常感谢你们!!!!

4

1 回答 1

3

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

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

于 2011-11-24T23:16:25.780 回答