首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置JMenuItem的大小?

如何设置JMenuItem的大小?
EN

Stack Overflow用户
提问于 2013-10-25 10:57:30
回答 3查看 12.8K关注 0票数 3

正如你所看到的,有这样的JMenuItem是很难看的,菜单项的宽度非常小。

代码如下:

代码语言:javascript
复制
JMenu menuOne=new JMenu("MenuOne");
    JMenu menuTwo=new JMenu("MenuTwo");
    JMenu menuThree=new JMenu("MenuThree");
    JMenu menuFour=new JMenu("MenuFour");
    JMenuBar mbar=new JMenuBar();
    //add the menu to menubar
    mbar.add(menuOne);
    JMenuItem OneItOne=new JMenuItem("1");

    JMenuItem OneItTwo=new JMenuItem("2");
    menuOne.add(OneItOne);
    menuOne.addSeparator();
    menuOne.add(OneItTwo);
    mbar.add(menuTwo);
    mbar.add(menuThree);
    mbar.add(menuFour);
    setJMenuBar(mbar);

简单地在字符串中添加一些空格是可以的(例如"1     "),但是有没有更好的方法来设置JMenuItem的首选长度?我尝试过OneItTwo.setSize(),但失败了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-25 11:15:46

setPreferredSize(new Dimension(...));在菜单项上工作。但是,setMinimumSize不起作用;菜单布局管理器似乎不支持它,因此,如果您想要设置一个可能被更大的内容覆盖的最小值,或者您想要在不更改高度的情况下设置最小宽度或首选宽度,则必须在子类中重写getPreferredSize()。例如,

代码语言:javascript
复制
menuOne.add(new JMenuItem("1") {
    @Override
    public Dimension getPreferredSize() {
        Dimension d = super.getPreferredSize();
        d.width = Math.max(d.width, 400); // set minimums
        d.height = Math.max(d.height, 300);
        return d;
    }
});
票数 4
EN

Stack Overflow用户

发布于 2014-12-10 22:26:46

在这里,您可以使用setPreferredSize指定所需的尺寸。你可以指定宽度到任何你想要的(200在我看来很好)。通过获取默认的首选大小,可以允许高度根据菜单项的数量自动调整大小:

代码语言:javascript
复制
JMenuItem item = new JMenuItem();
item.setPreferredSize(new Dimension(200, item.getPreferredSize().height));
票数 1
EN

Stack Overflow用户

发布于 2016-04-30 04:32:18

如果你想设置你的宽度的大小(在我的例子中是JMenuItem )。您可以使用此解决方案更改宽度:

代码语言:javascript
复制
 JMenuItem returnMenu = new JMenuItem(action) {
            @Override
            public Dimension getPreferredSize() {
                Dimension preferred = super.getPreferredSize();
                Dimension minimum = getMinimumSize();
                Dimension maximum = getMaximumSize();
                preferred.width = Math.min(Math.max(preferred.width, 200),
                        maximum.width);
                preferred.height = Math.min(Math.max(preferred.height, minimum.height),
                        maximum.height);
                return preferred;
            }
        };

我只是重用了这个解决方案:JMenuItem setMinimumSize doesn't work

正如你所看到的,它工作得更好。Selected solution before This solution after I grant,这与选择的答案类似。

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

https://stackoverflow.com/questions/19580343

复制
相关文章

相似问题

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