gpt4 book ai didi

java - 键 1-9 的 KeyStroke 不适用于 JTextComponent 的 Keymap

转载 作者:行者123 更新时间:2023-12-01 09:47:50 26 4
gpt4 key购买 nike

由于某种未知的原因,此代码不起作用。

JTextComponent component = new JTextArea();
Keymap keymap = component.getKeymap();
keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_1, InputEvent.ALT_DOWN_MASK), myAction);

当我按 Alt 和 1 时(不是在小键盘上,而是字母上方的 1),它永远不会触发 myAction。这也不适用于任何修饰符。

这里给出的解决方案https://stackoverflow.com/a/11974908/3838784不起作用,该操作仍未触发。从键映射中删除所有以 ALT 作为修饰符的击键似乎也没有帮助。

最佳答案

我尝试了一个示例,使用你的代码,它似乎工作正常。如果您的代码有任何不同之处,您能告诉我吗?

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.text.JTextComponent;
import javax.swing.text.Keymap;

public class MyExample extends JFrame {

MyExample() {
initGUI();
} // Constructor

private void initGUI() {
// Create the button
JButton myButton = new JButton("Press ME !");

// Create the label
JLabel testLabel = new JLabel("TEST !!!");

// Set up the window
JPanel pane = (JPanel) getContentPane();
pane.setLayout(new BorderLayout());

pane.add(myButton, BorderLayout.CENTER);
pane.add(testLabel, BorderLayout.SOUTH);
JTextComponent component = new JTextArea();
pane.add(component, BorderLayout.SOUTH);
Keymap keymap = component.getKeymap();

keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_1, InputEvent.ALT_DOWN_MASK), new MyAction());

setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
// setSize(600,300);

}

public static void main(String[] args) {
try {
// Set System L&F
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (UnsupportedLookAndFeelException e) {
// handle exception
} catch (ClassNotFoundException e) {
// handle exception
} catch (InstantiationException e) {
// handle exception
} catch (IllegalAccessException e) {
// handle exception
}
// new MyExample().setVisible(true);
EventQueue.invokeLater(() -> {
MyExample me = new MyExample();
me.setVisible(true);
});
}

class MyAction extends AbstractAction{

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Action performed");
}

}
}

关于java - 键 1-9 的 KeyStroke 不适用于 JTextComponent 的 Keymap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com