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

发布于 2024-12-17 16:38:11 字数 702 浏览 2 评论 0原文

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

提前非常感谢大家!!!!

I am having a simple problem I guess, that u should know how to solve..
I am trying to do this:
I have a JFrame.
Then I create a JPanel and set his layout to GridLayout(5,5)
Finnaly I add this JPanel to the Container of my JFrame.

When I try to get the width of my panel it shouldnt give me 0 right?
I do this: System.out.println(mypanel.getSize().getWidth()); and it says that is zero :c
why ??
I wanna know the size so I can divide per 5 and know how much to paint for each label, this will be a grid of labels..
Thanks alot in advance...

    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??
     }

thanks alot in advance guys!!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若水微香 2024-12-24 16:38:11

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

如果面板中永远不会有任何内容,并且想要绕过此 (0, 0) 大小,则可以重写面板的 getPreferredSize() 以返回您希望面板在布局时遵循的尺寸。

Panels are sized based on their layout. specifically when they are shown and doLayout() is called for you. doLayout() figures out what the appropriate size for your panel is based on the contents of the panel, and the layout manager in force. Since your panel has nothing in it, the appropriate size is 0, 0.

If you will never have anything in the panel, and want to circumvent this (0, 0) size, you can override getPreferredSize() of the panel to return a size that you want the panel to respect for layout.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文