Java JMenuItem快捷方式对齐
我有一个带有标准项目和快捷方式的JMenuBar。但我注意到快捷方式描述是左对齐的,看起来很难看。有没有办法将其右对齐 附言:“Umschalt”的意思是转移。有没有办法强迫它说shift而不是Umschalt [更新:Java JMenuItem快捷方式对齐,java,swing,keystroke,jmenubar,Java,Swing,Keystroke,Jmenubar,我有一个带有标准项目和快捷方式的JMenuBar。但我注意到快捷方式描述是左对齐的,看起来很难看。有没有办法将其右对齐 附言:“Umschalt”的意思是转移。有没有办法强迫它说shift而不是Umschalt [更新:Locale.setDefault(Locale.ENGLISH);解决了这个问题,但是只影响特定组件的解决方案会更好..] PSPS:WithUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())我
Locale.setDefault(Locale.ENGLISH);
解决了这个问题,但是只影响特定组件的解决方案会更好..]
PSPS:WithUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())代码>我已将外观设置为操作系统默认设置。但是现在我想在标准操作系统外观的基础上对外观做一些小的调整。例如,我想把JMenuBar变成黑色。互联网告诉我使用UIManager.put(“tMenuBar.background”,Color.BLACK)代码>但它似乎没有任何作用
[更新:这似乎是不可能的Windows外观:/]
代码如下:
private JMenuBar tMenuBar;
private JMenu mbEdit;
private JMenuItem mCut, mCopy, mPaste, mDo, mUndo;
tMenuBar = new JMenuBar();
mbEdit = new JMenu("Edit");
tMenuBar.add(mbEdit);
// EDIT
mUndo = new JMenuItem("Undo");
mDo = new JMenuItem("Redo");
mCut = new JMenuItem("Cut");
mCut.setIcon(iCut);
mCopy = new JMenuItem("Copy");
mCopy.setIcon(iCopy);
mPaste = new JMenuItem("Paste");
mPaste.setIcon(iPaste);
mbEdit.add(mUndo);
mbEdit.add(mDo);
mbEdit.addSeparator();
mbEdit.add(mCut);
mbEdit.add(mCopy);
mbEdit.add(mPaste);
// Undo
mUndo.setAccelerator(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
// Redo
mDo.setAccelerator(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_Z, ((Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | java.awt.event.InputEvent.SHIFT_MASK))));
// Cut
mCut.setAccelerator(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_X, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
// Copy
mCopy.setAccelerator(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
// Paste
mPaste.setAccelerator(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
已尝试:
applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
我想把JMenuBar变成黑色
应该是(带“t”)
您需要在创建组件之前设置UIManager属性
此外,并非所有LAF都支持该属性。查看更多信息和LAF支持的属性列表。查看有关德语单词的信息。我确实意识到这可能是一个评论,而不是一个答案,但我仍然无法这样做,因为缺乏声誉,我想帮助 嗯。我想我必须使用我创建的对象。。但还是没有运气。我已经下载了这个工具,是的,Windows LAF确实支持MenuBar.background。在创建组件之前放置它似乎并不能修复它<代码>UIManager.put(“菜单栏.背景”,颜色.黑色);JMenuBar tMenuBar=新的JMenuBar()代码>有趣的事实:如果我删除设置Look&Feel的部分,UIManager.put方法实际上可以工作。。。(这很奇怪,因为UIManagerDefaults应用程序说“Windows L&F”应该有一个ManuBar.background方法…@Haeri,是的,可能会有不一致。UIManager可能有信息,但LAF可以忽略它。好的。谢谢。无论如何,这是一个PSPS问题xD。哦,谢谢!这很有帮助。但它将整个应用程序改为英语,而不是系统默认值…如果能够只更改特定部分…但这也很好。(希望将您的答案标记为最终答案,但关于对齐的主要问题仍然存在…)我很高兴它有所帮助,关于整个应用程序的更改,您可以尝试使用setLocale()方法只在GUI对象上使用,但我不确定这是否有效。关于对齐,这有帮助吗?呵呵。我在发布问题之前做了一些研究。是的。我已经尝试过了。它只影响项目的标签,但不影响快捷方式。它看起来像:[……打开Ctrl+O]而不是:[打开….Ctrl+O]但是+1的努力;)你能试试这个吗mUndo.applycomponentation(ComponentOrientation.RIGHT\u TO\u LEFT);请?但是关于对齐的主要问题仍然存在。
这是JMenuItem的UI的一部分。因此,您可能需要自己更改UI布局。是的。。我已经开始研究JMenuItem的文档。。但我在任何地方都找不到“布局”。。。但是为什么会有人实现快捷方式显示左对齐呢??
UIManager.put("MenuBar.background", Color.BLACK);