Работа вокруг
Менее элегантное решение, вы можете попробовать добавить ключевой слушатель, чтобы переопределить поведение по умолчанию "ctrl + a", реализовав метод keyPressed (обратите внимание, что в следующем примере не запрещается "ctrl + a", просто добавлена поддержка " meta + a "):
@Override
public void keyPressed(final KeyEvent e) {
// Get the default toolkit shortcut mask ("meta" for OSX).
int keyMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
// You could also check modifiers against KeyEvent.META_MASK...
if (e.getModifiers() == keyMask && e.getKeyCode() == KeyEvent.VK_A) {
// Select everything (assumes member of child text component class).
this.selectAll();
// We handled this keystroke, 'a' will be ignored by underlying text component.
e.consume();
}
}
Лучшей альтернативой будет использование inputMaps (см. Комментарий от uudashr ниже).
Мысли о первопричине
К сожалению, как следует из названия класса, внешний вид (или LAF ) является комбинацией внешнего вида, т.е. look , а также "поведением системы", то есть чувствовать . Если вы копаете вокруг источника вещества, SubstanceLookAndFeel переопределяет BasicLookAndFeel , который поставляется с ходом. Похоже, что внутри BasicLookAndFeel нарушающее поведение установлено в initComponentDefaults. Вы должны иметь возможность получить UIDefaults от LAF, вызвав getDefaults ().
Проблемы здесь:
- «Системные поведения», которые вы хотите изменить, смешаны с настройками внешнего вида, которые вы хотите оставить нетронутыми.
- Мне также не удалось найти какой-либо простой способ ввести эти значения по умолчанию в вещество на уровне LAF ... У кого-нибудь есть другие идеи по этому поводу?