2012-07-29 140 views
4

简单地说,JMenu.setHorizo​​ntalAligment(SwingConstants.CENTER)什么也不做,文本仍然左对齐(使用Windows LAF)。在JMenu组件中设置标题文本的对齐方式

是否有任何方法对齐菜单标题中的文本(而不是JMenuItem - JMenus自己)?

我正在使用JDK1.7。

什么我与它的JMenus的JMenuBar看起来像目前:

Current JMenuBar with JMenus (and a single JMenuItem

+1

请尝试setHorizo​​ntalTextPosition? – MadProgrammer 2012-07-29 20:36:31

+0

@MadProgrammer你打我吧 – ghostbust555 2012-07-29 20:40:39

+0

为什么你想让你的用户感到惊讶? – kleopatra 2012-07-30 07:23:36

回答

1

我已经使用CSS来定位和设置菜单中的文字。 style="text-align:center;"CSS,用于将文本放置在底部示例图像的中心位置。在我的情况下,我在<p>段落标签中封装了JMenu标题;

clientFilter = new JMenu("<html><p style='text-align:center;'>Client</p></html>"); 
siteFilter = new JMenu("<html><p style='text-align:center;'>Site</p></html>"); 
employeeFilter = new JMenu("<html><p style='text-align:center;'>Employee</p></html>"); 
jobtypeFilter = new JMenu("<html><p style='text-align:center;'>Job Type</p></html>"); 

看起来像这样;

enter image description here

值得一提的是,图像上面我也用的样式属性width:90px;color:blue;,但我删除了这两个风格从上面简单的代码示例。希望这可以帮助。

这个答案或多或少是我原来的答案here的副本。

+0

谢谢,没有考虑到! – Gorbles 2014-03-06 10:10:31

1

尝试setHorizo​​ntalTextPosition(SwingConstants.CENTER);其次是invalidate();

+0

+1使它成为答案;) – MadProgrammer 2012-07-29 21:06:59

+0

对不起,这对我不起作用。 试图调用它在任何和所有的JMenus你可以看到上面(mainMenu.setHorizo​​ntalTextPosition(等),mainMenu.invalidate()),没有骰子。 – Gorbles 2012-08-10 01:11:30

1

假如你试图对上述JMenu设置Margin,如果我这样做:

JMenu optionsMenu = new JMenu("Option"); 
optionsMenu.setMargin(new Insets(5, 50, 5, 5)); 

这是输出我得到:

MARGIN OUTPUT

MESSENGER IMAGE

+0

这对我的布局也没有任何作用。我认为Windows LAF的默认行为是阻止它做任何事情。 我不认为我可以做很多研究Windows LAF是如何构建和/或定义我自己的(并非我想在一百万年内这样做,*不寒而栗*)。 – Gorbles 2012-08-10 01:13:12

+0

@Gorb:好的,如果我把'LookAndFeel'改为windows,我仍然可以得到和前面一样的结果。请看看最新的编辑,并比较图像,第一个是NIMBUS和第二个是WINDOWS。 – 2012-08-10 10:59:26

+0

正如我所说,它不会改变我的GUI上的任何东西,不幸的是:( 您正在使用Java SE 7? – Gorbles 2012-08-13 10:37:40

相关问题