Java 设置JMenu组件中标题文本的对齐方式

Java 设置JMenu组件中标题文本的对齐方式,java,swing,jmenu,Java,Swing,Jmenu,简单地说,JMenu.setHorizontalAligment(SwingConstants.CENTER)什么也不做,文本仍然是左对齐的(使用Windows LAF) 是否有任何方法可以对齐菜单标题中的文本(而不是JMenuItem-JMenus本身) 我正在使用JDK1.7 我的JMenuBar及其JMenus当前的外观: 尝试设置水平文本位置(SwingConstants.CENTER);后跟invalidate() 如果我这样做,您是否尝试设置所述JMenu: JMenu option

简单地说,JMenu.setHorizontalAligment(SwingConstants.CENTER)什么也不做,文本仍然是左对齐的(使用Windows LAF)

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

我正在使用JDK1.7

我的JMenuBar及其JMenus当前的外观:


尝试设置水平文本位置(SwingConstants.CENTER);后跟invalidate()

如果我这样做,您是否尝试设置所述
JMenu

JMenu optionsMenu = new JMenu("Option");
optionsMenu.setMargin(new Insets(5, 50, 5, 5));
这是我得到的输出:


我使用了
CSS
来定位菜单中的文本并设置其样式
style=“text align:center;”“
是用于将文本定位在底部示例图像中心的
CSS
。在我的例子中,我将
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>");
clientFilter=newjmenu(

Client

); siteFilter=newjmenu(“

Site

”; employeeFilter=newjmenu(“

Employee

”; jobtypeFilter=new JMenu(“

作业类型

”;
看起来像这样

值得注意的是,在上面的图片中,我还使用了
width:90px;颜色:蓝色,但为了简单起见,我从上面的代码示例中删除了这两种样式。希望这有帮助


此答案或多或少是我原始答案的副本。

请尝试设置水平文本位置?@MadProgrammer你比我抢先一步,为什么你想给你的用户一个惊喜?@Gorb我也遇到了同样的问题。查看我关于这个问题的帖子:根据下面的答案,这并没有解决它。我在这里发布之前尝试过设置水平位置,对不起,我应该澄清一下@克利奥帕特拉我不知道你的意思。我想要的只是一个漂亮的小缩进(最好是居中),使菜单看起来更专业一点。对不起,这对我不起作用。尝试在上面看到的任何和所有JMenus(main menu.setHorizontalTextPosition(etc)、main menu.invalidate())上调用它,没有骰子。这对我的布局也没有任何作用。我认为Windows LAF的默认行为是阻止它做任何事情。我认为除了研究Windows LAF是如何构造和/或定义我自己的以外,我做不了什么(我不想在一百万年后这么做,不寒而栗)。@Gorb:如果我将我的
LookAndFeel
更改为Windows,我仍然会得到与之前相同的结果。请看一下最新的编辑,并比较图片,第一个是针对NIMBUS的,第二个是针对WINDOWS的。正如我所说的,它根本没有改变我GUI上的任何内容。不幸的是:(你在使用Java SE 7吗?Ejaaaaaaaaaaaaactly:这是版本
Java version“1.7.0_03”Java(TM)SE运行时环境(build 1.7.0_03-b05)
在Windows 7 32位平台上。谢谢,我还没有考虑到这一点!