以德语显示菜单快捷方式



我是德国人。当我创建这样的菜单快捷方式时:

neu.setAccelerator(new KeyCodeCombination(KeyCode.N, KeyCombination.CONTROL_DOWN));

快捷方式是英文的。

我该怎么做,才能以德语显示菜单快捷方式?

未在其本地化版本中显示修饰符是最近报告的错误(并且看起来不像在修复优先级列表顶部附近的任何地方(。所以我们必须破解它。

基本思想是在正常处理将其设置为硬编码英语版本后替换加速器文本。下面的示例在 onShow 处理程序的自定义 Menu 类中执行此操作。在这里,它只是简单地再次硬编码,生产代码显然需要实现对正确本地化版本的某种查找。

public class BugHackMenu extends Menu {
public BugHackMenu(String text) {
super(text);
setOnShown(e -> hackAcceleratorText());
}
private void hackAcceleratorText() {
getItems().stream().forEach(item -> {
if (!needsHack(item)) return;
Node menuRow = item.getStyleableNode();
if (menuRow != null) {
Node accText = menuRow.lookup(".accelerator-text");
if (accText instanceof Label) {
Label acc = (Label) accText;
acc.setText(getHackedText(item.getAccelerator()));
}
}
});
}
private String getHackedText(KeyCombination accelerator) {
return accelerator.getDisplayText().replace("Ctrl", "Strg");
}
private boolean needsHack(MenuItem item) {
KeyCombination acc = item.getAccelerator();
return acc != null && acc.getControl() == ModifierValue.DOWN;
}
}

有没有办法对删除键执行此操作! 因此,我可以使用"Del"而不是"删除"作为快捷方式 PS:我正在使用JMenuItem和KeyStroke!

private JMenuItem delRef = null; del = new JMenuItem("delete"); del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));

它在java和Unix上

最新更新