Tag: 击键

Java Swing KeyStrokes:如何使CTRL修饰符工作

在下面的程序中,为什么在按CTRL + a时按下一键打印“你好,世界”不? import java.awt.event.*; import javax.swing.*; public class KeyStrokeTest { public static void main(String[] args) { JPanel panel = new JPanel(); /* add a new action named “foo” to the panel’s action map */ panel.getActionMap().put(“foo”, new AbstractAction() { public void actionPerformed(ActionEvent e) { System.out.println(“hello, world”); } }); /* connect two keystrokes with the newly […]

JTable单元格编辑可以消耗击键吗?

在我的程序中,有一个带有许多加速器的JMenu和一个可编辑的JTable。 问题是,在编辑JTable时,加速键仍会被触发。 例如,如果我在jtable单元格中输入字母’n’,那么’next’菜单选项也会激活。 如何让jtable单元格编辑器专门使用击键? import javax.swing.JFrame; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JTable; import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import java.awt.Toolkit; public class SampleClass{ public SampleClass(){ JFrame frame = new JFrame(); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu(); JMenuItem item = new JMenuItem(); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, 0)); item.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { […]

Java:如何从任何JComponent中删除默认的KeyStrokes?

我想控制哪个击键属于哪个Jcomponent 。 我甚至想知道如何删除与Jcomponent关联的默认击键,并将其替换为其他喜欢的击键。 我按照这个oracle 教程 ,它给出了一个JButton的例子,我尝试了它并且它工作正常,但是当我用JComboBox尝试它时它不起作用! 我试图删除SPACE键,这是为了防止JComponent响应SPACE按键 我用这段代码删除了SPACE键: firstButton.getInputMap().put(KeyStroke.getKeyStroke(“SPACE”), “none”); JComboBox也是如此 sizesComboBox.getInputMap().put(KeyStroke.getKeyStroke(“SPACE”), “none”); 但是不起作用,它(JComboBox)仍然响应SPACE键 对于我删除了SPACE印刷机效果的firstButton ; 我添加了键F ,所以现在当你按下键盘上的F键时按下了firstButton ,ant没有响应SPACE (意图)。 请注意,即使firstButton没有焦点,也会发生F的按下( JComponent.WHEN_IN_FOCUSED_WINDOW ) 这是一个显示我的例子的SSCCE代码: 注意 :我故意没有将上面的代码行添加到第二个按钮“secondButton”,因此它默认仍然响应SPACE 。 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.*; public class KeyStrokeTest extends JPanel { JPanel widgetPanel; JPanel textAreaPanel; JButton firstButton; JButton secondButton; JTextArea textArea; JComboBox sizesComboBox; […]

Swing中的本地化加速器(JMenuItem热键)

我正在使用德语笔记本电脑上的英语应用程序,通过西class牙语操作系统。 即使我在我的应用程序的开始时明确设置Locale.setDefault(Locale.ENGLISH),我也看到菜单中的hotkexs CTRL + Mayúsculas + C 代替 CTRL + SHIFT + C 我传递给KeyStroke对象。 这个词不仅没有像我指定的那样被本地化为英语,而且它还将SHIFT键映射到MAYUS(英语中的CAPS LOCK),所以我想这不仅是一个语言问题,也是键图。 那么如何为所有GUI组件强加英语呢? 谢谢!

如何设置按键按键绑定?

此应用程序的箭头键需要使独立于焦点的按下和释放事件。 设置onKeyRelease true会导致预期的释放事件,但设置onKeyRelease false(下面的代码)似乎不会停止自动重复。 当按住箭头键时,有没有办法实现键绑定触发一次? Action right = new AbstractAction() { public void actionPerformed(ActionEvent e) { … } }; mainPanel.getInputMap(JPanel.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0, false), “right”); mainPanel.getActionMap().put(“right”, right);

Java:使用带箭头键的按键

我有一些我需要修改的代码。 在代码中,原作者使用KeyStroke.getKeyStroke来获取用户输入。 例如,在此代码中,他使用a是左箭头而不是左箭头。 我想改变这个,但我不知道怎么做。 这是原始代码: registerKeyboardAction( new ActionListener() { public void actionPerformed(ActionEvent e) { tick(RIGHT); } }, “right”, KeyStroke.getKeyStroke(‘d’), WHEN_IN_FOCUSED_WINDOW ); 我必须将它改为这样的东西,但是当它运行时,它不起作用: KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT); KeyStroke.getKeyStroke(“RIGHT”);