首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FlowLayout的问题

FlowLayout的问题
EN

Stack Overflow用户
提问于 2010-03-29 21:47:31
回答 2查看 6K关注 0票数 2
代码语言:javascript
复制
public class MyFrame extends JFrame
{
public MyFrame(String title)
{

    setSize(200, 200);
    setTitle(Integer.toString(super.getSize().width));
    setLayout(new FlowLayout());
    for (int i = 0; i < 5; ++i)
    {
        JButton b = new JButton();
        b.setSize(90,50);
        b.setText(Integer.toString(b.getSize().width));
        this.add(b);![alt text][1]
    }
    this.setVisible(true);
}
}

为什么有按钮宽度90,我得到的是三个按钮在一行而不是两个按钮的窗口?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-29 21:49:28

如果需要,FlowLayout将从左到右(或从右到左)排列Component的包装。如果您希望显式设置每个JButton的大小,则应该使用setPreferredSize而不是setSize,因为布局管理器通常在执行布局时使用最小、首选和最大大小。

大小属性非常令人困惑--有一篇有趣的文章here。特别要注意的是:

大小属性是否始终适用?

一些布局管理器,如GridLayout、完全忽略大小属性

FlowLayout,试图支持preferredSize的两个维度,并且可能不需要支持minimumSize或maximumSize。

票数 5
EN

Stack Overflow用户

发布于 2010-03-29 21:52:57

首先,您没有正确使用JFrame:您没有直接将组件添加到框架中,而是将它们添加到JPanel中,然后使用setContentPane()将其传递给框架。

另外:仅仅为了添加组件而直接对JFrame进行子类化并不是很优雅。相反,请将框架创建为单独的对象。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2538309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档