如何设置JMenuItem的大小? [英] How to set a size for JMenuItem?

查看:1088
本文介绍了如何设置JMenuItem的大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如您所见,拥有这类JMenuItem是很丑陋的.菜单项的宽度很小.

As you can see, it's ugly to have these kind of JMenuItems. The width of the menu items is quite small.

这是代码:

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(),但是失败了.

Simply adding some blanks in the String is okay (e.g. "1     "), but is there any better way to set a preferred length of JMenuItem? I've tried OneItTwo.setSize(), but failed.

推荐答案

setPreferredSize(new Dimension(...));适用于菜单项.但是setMinimumSize不起作用;菜单布局管理器似乎不接受它,因此,如果您要设置一个最小值,该最小值可能会因包含较大的内容而被覆盖,或者想要设置一个最小或首选宽度而不更改高度,则必须覆盖在子类中.例如,

setPreferredSize(new Dimension(...)); works on menu items. setMinimumSize does not work though; it does not seem to be honored by the menu layout manager, so if you want to set a minimum that may be overridden by having larger content, or you want to set a minimum or preferred width without changing the height, you must override getPreferredSize() in a subclass. E.g.,

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;
    }
});

这篇关于如何设置JMenuItem的大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆