Сочетания клавиш для кроссплатформенного внешнего вида (металл l & f) - PullRequest
1 голос
/ 24 марта 2020

Я читал о кроссплатформенном внешнем виде ie металлический L & f, который одинаково выглядит на всех платформах. Я хотел знать, какие будут сочетания клавиш для этого l & f. Я сталкиваюсь с проблемой, когда в ОС MA C, если мне нужно скопировать / вставить, я должен использовать сочетания клавиш (ctrl + v / c) для действий копирования / вставки. Я не могу использовать ма c ярлыков (cmd + v / c). Мне интересно, может ли это быть из-за l & f. Пожалуйста, помогите. Спасибо заранее.

1 Ответ

0 голосов
/ 24 марта 2020

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

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 вставит.

Проверено с jdk11 на OSX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...