如何设置JMenuItem的大小?
正如你所看到的,拥有这些JMenuItem
很难看。 菜单项的宽度非常小。
这是代码:
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);
只需在String中添加一些空格即可(例如"1 "
),但有没有更好的方法来设置JMenuItem
的首选长度? 我尝试过OneItTwo.setSize()
,但失败了。
setPreferredSize(new Dimension(...));
适用于菜单项。 setMinimumSize
虽然不起作用; 它似乎没有得到菜单布局管理器的尊重,所以如果你想设置一个可以通过拥有更大内容来覆盖的最小值,或者你想设置一个最小宽度或首选宽度而不改变高度,你必须覆盖getPreferredSize()
在子类中。 例如,
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; } });
在这里,您可以使用setPreferredSize
指定所需的维度。 你可以指定任何你想要的宽度(200看起来对我好)。 您可以通过获取默认首选大小,根据菜单项的数量允许高度保持自动resize:
JMenuItem item = new JMenuItem(); item.setPreferredSize(new Dimension(200, item.getPreferredSize().height));
如果要设置JMenuItem的大小(在我的情况下是宽度)。 您可以使用此解决方案更改宽度:
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不起作用
它看起来效果更好。 之前选择的解决方案此解决方案在我授予您之后,这与所选答案类似。