swing - JFrame Container 内JPanel 的宽度和高度为0,为什么?

标签 swing height width jpanel grid-layout

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

相关文章:

CSS - 无法更改移动设备文本框的宽度/高度

java - JFrame 不符合 JPanel 的 setMinimunSize()

java - 从 JPanel 读取 JFrame 中的 Action 监听器

java - JMenu 弹出窗口有时有效

jquery - jquery 无法获取图像的高度

css - 分区高度 :100% wrap content

html - 让 child 处于 parent 的 100% 高度并溢出 :auto

html - CSS - 以相对于其最大宽度的 % 设置跨度的宽度

java - 还记得鼠标点击的位置吗?数组列表?哈希码?

html - 在具有固定间距和父填充的 DIV 上保留纵横比