跨平台外观的快捷键绑定(金属 l&f)
Shortcut key bindings for cross platform look & feel(metal l&f)
我正在阅读有关跨平台外观和感觉的信息,即在所有平台上看起来都一样的金属 L&f。我想知道这个 l&f 的快捷键是什么。我面临一个问题,在 MAC OS 中,如果我必须 copy/paste 我必须使用 window 快捷方式(ctrl + v/c)来 copy/paste actions.I 无法使用 mac 快捷方式 (cmd+v/c)。我想知道这是否可能是由于 l&f。请提前help.Thanks。
是的,外观可以做到这一点。你可以做的一件事,我希望有人有更好的答案,就是为你想要不同行为的组件设置输入映射。下面是对文本字段使用平台默认输入映射的方法。
public static void startGui(){
try{
LookAndFeel aqua = UIManager.getLookAndFeel(); //aqua
UIDefaults def = UIManager.getDefaults();
Object b = def.get("TextField.focusInputMap");
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
UIDefaults def2 = UIManager.getDefaults();
def2.put("TextField.focusInputMap", b);
}catch(Exception e){
e.printStackTrace();
}
JFrame frame = new JFrame("title");
JTextField field = new JTextField();
frame.add(field);
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) throws Exception {
EventQueue.invokeLater( ()->startGui() );
}
如果你 运行 那个,那么 cmd+v 应该粘贴,但是如果你推荐行 def2.put(...)
然后 ctrl+v 将粘贴。
已在 OSX.
上使用 jdk11 进行验证
我正在阅读有关跨平台外观和感觉的信息,即在所有平台上看起来都一样的金属 L&f。我想知道这个 l&f 的快捷键是什么。我面临一个问题,在 MAC OS 中,如果我必须 copy/paste 我必须使用 window 快捷方式(ctrl + v/c)来 copy/paste actions.I 无法使用 mac 快捷方式 (cmd+v/c)。我想知道这是否可能是由于 l&f。请提前help.Thanks。
是的,外观可以做到这一点。你可以做的一件事,我希望有人有更好的答案,就是为你想要不同行为的组件设置输入映射。下面是对文本字段使用平台默认输入映射的方法。
public static void startGui(){
try{
LookAndFeel aqua = UIManager.getLookAndFeel(); //aqua
UIDefaults def = UIManager.getDefaults();
Object b = def.get("TextField.focusInputMap");
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
UIDefaults def2 = UIManager.getDefaults();
def2.put("TextField.focusInputMap", b);
}catch(Exception e){
e.printStackTrace();
}
JFrame frame = new JFrame("title");
JTextField field = new JTextField();
frame.add(field);
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) throws Exception {
EventQueue.invokeLater( ()->startGui() );
}
如果你 运行 那个,那么 cmd+v 应该粘贴,但是如果你推荐行 def2.put(...)
然后 ctrl+v 将粘贴。
已在 OSX.
上使用 jdk11 进行验证