Выравнивание ярлыка JMenuItem

У меня есть JMenuBar со стандартными элементами и ярлыками. Но я заметил, что описание ярлыка выровнено по левому краю, что выглядит некрасиво. Есть ли способ выровнять его по правому краю?

PS: "Umschalt" означает сдвиг. Есть ли способ заставить его говорить сдвиг вместо Умшалт?

[ОБНОВЛЕНИЕ: Locale.setDefault(Locale.ENGLISH); устраняет проблему, но решение, влияющее только на определенные компоненты, было бы лучше.. ]

PSPS: С UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); я установил внешний вид ОС по умолчанию. Но теперь я хотел бы внести небольшие коррективы во внешний вид поверх стандартного вида ОС. Например, я хотел бы сделать JMenuBar черным. Интернет посоветовал мне использовать UIManager.put("tMenuBar.background", Color.BLACK);, но, похоже, он ничего не делает..

[ОБНОВЛЕНИЕ: кажется, что это невозможно с интерфейсом Windows Look and feel :/]

введите здесь описание изображения

Вот код:

    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);

введите здесь описание изображения


person Haeri    schedule 25.10.2014    source источник
comment
but the main question about the alignment still remains..) это часть пользовательского интерфейса для JMenuItem. Поэтому вам, вероятно, придется изменить макет пользовательского интерфейса самостоятельно.   -  person camickr    schedule 25.10.2014
comment
Да.. Я уже начал изучать документацию JMenuItem.. но нигде не могу найти Layout... Но зачем кому-то все равно реализовывать отображение ярлыков по левому краю??   -  person Haeri    schedule 25.10.2014


Ответы (2)


Я хотел бы сделать JMenuBar черным.

Так и должно быть (с буквой «т»)

UIManager.put("MenuBar.background", Color.BLACK);

Вам необходимо установить свойства UIManager «до» создания компонента.

Кроме того, это свойство может поддерживаться не всеми LAF. Ознакомьтесь с значениями UIManager по умолчанию для получения дополнительной информации и списка поддерживаемых свойств. по ЛАФ.

person camickr    schedule 25.10.2014
comment
Ok. Я думал, что мне нужно использовать объект, который я создал. Но все равно не повезло. Я уже загрузил этот инструмент, и да, Windows LAF поддерживает MenuBar.background. И размещение его перед созданием компонента, похоже, не исправляет это. UIManager.put("MenuBar.background", Color.BLACK); JMenuBar tMenuBar = new JMenuBar(); - person Haeri; 25.10.2014
comment
Интересный факт: если я удалю часть, где я установил Look&Feel, метод UIManager.put действительно сработает... (Это странно, потому что приложение UIManagerDefaults говорит, что Windows L&F должен иметь метод ManuBar.background.... - person Haeri; 25.10.2014
comment
@Haeri, да, могут быть несоответствия. UIManager может иметь информацию, но LAF может ее игнорировать. - person camickr; 25.10.2014
comment
Ok. Спасибо. В любом случае, это был вопрос PSPS xD. - person Haeri; 25.10.2014

Взгляните на этот сообщение о немецких словах. Я понимаю, что это, вероятно, был комментарий, а не ответ, но я все еще не могу сделать это из-за отсутствия репутации, и я хочу помочь.

person Iootu    schedule 25.10.2014
comment
Ой ну спасибо! Это помогло. Но это изменило все приложение на английский язык, а не на системный по умолчанию... Было бы здорово иметь возможность изменять только определенные части... Но это тоже здорово. (Хотелось бы отметить ваш ответ как окончательный ответ, но главный вопрос о выравнивании все еще остается..) - person Haeri; 25.10.2014
comment
Я рад, что это помогло, что касается изменения всего приложения, вы можете попробовать использовать метод setLocale() только для объектов GUI, но я не уверен, что это работает. - person Iootu; 25.10.2014
comment
Что касается выравнивания, поможет ли эта ссылка? - person Iootu; 25.10.2014
comment
Хе-хе. Я действительно делаю некоторые исследования, прежде чем задавать вопросы. И да. Я уже пробовал это. Это влияет только на метку элемента, но не на ярлык. Выглядит это примерно так: [....Открыть Ctrl+O] Вместо: [Открыть.... Ctrl+O] Но +1 за старание ;) - person Haeri; 25.10.2014
comment
Можете ли вы попробовать это mUndo.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); пожалуйста? - person Iootu; 25.10.2014
comment
Пожалуйста, отбросьте этот последний комментарий, я уверен, что это не то, что вам нужно. - person Iootu; 25.10.2014
comment
@lootu Да, уже пробовал... хотя выглядит круто xD (см. ОП) - person Haeri; 25.10.2014
comment
@Haeri, лол, верьте или нет, я не понял, прежде чем опубликовать, что ярлык и описание поменялись местами. - person Iootu; 25.10.2014