【发布时间】:2014-10-26 00:45:04
【问题描述】:
我有一个带有标准项目和快捷方式的 JMenuBar。但是我注意到快捷方式描述是左对齐的,看起来很难看。有没有办法右对齐?
PS:“Umschalt”的意思是转变。有没有办法强制它说 shift 而不是 Umschalt?
[更新:Locale.setDefault(Locale.ENGLISH); 解决了这个问题,但只影响特定组件的解决方案会更好.. ]
PSPS:对于UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());,我已将外观设置为操作系统默认值。但现在我想在标准 OS Look 之上对外观做一些小的调整。例如,我想让 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);
【问题讨论】:
-
but the main question about the alignment still remains..)这是 JMenuItem 的 UI 的一部分。因此,您可能需要自己更改 UI 布局。 -
是的.. 我已经开始查看 JMenuItem 的文档了.. 但是我在任何地方都找不到“布局”...但是为什么有人会实现左对齐的快捷方式显示呢?
标签: java swing keystroke jmenubar