Tag: key bindings

Keymap,InputMap,ActionMap,KeyListener – 选择重载

我无法找到关于所有这些之间关系的简明回答,以便我可以选择最佳实践并继续前进。 JTextComponent具有: 旧的addKeyListener(..) 。 我们编写一个KeyListener ,其方法可以在keyPressed(..) , keyTyped(..)等事件上调用,我们可以查询: event.getKeyCode() 。 addKeymap(..)和setKeymap(..) 。 Keymap有addActionForKeyStroke(..) ,它接受KeyStroke (我们可以通过调用指定字符或键代码的KeyStroke的静态方法获得)和Action ,它是一个带有铃声和口哨声的ActionListener 。 getInputMap(..)和getActionMap(..) 。 InputMap将KeyStroke (如上所示)映射到String , ActionMap将字符串映射到Action (如上所述)。 Java教程如何使用键绑定来讨论这个问题。 这是实现相同function的三种冗余方式。 除了比较优势/劣势之外,这还提出了这三种机制如何共存的自然问题? 哪些优先于其他?

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; […]

KeyPress:如何检测用户在应用程序运行时是否按下键盘上的“向下”箭头键

这是我迄今为止所拥有的……我正在使用它作为键绑定。 我想在应用程序运行时按“向下”箭头键,然后自动按下“向下”箭头键3次,然后在代码中按“Enter”键完成。 我知道这不是最好的解释,但很抱歉,如果你还是不明白,我会尽力解释一下。 这是代码: public class MyKeyListener extends KeyAdapter{ @Override public void keyPressed(KeyEvent evt){ } KeyListener keyListener = new KeyListener() { @Override public void keyPressed(KeyEvent keyEvent) { int keyCode = keyEvent.getKeyCode(); if(keyCode == 1005){ System.out.println(“So far, so good..”); } } @Override public void keyTyped(KeyEvent e) { throw new UnsupportedOperationException(“Not supported yet.”); } @Override public void […]

Java:使用KeyPress以一定角度移动对象并改变角度

好吧,所以我想要的是矩形始终在移动,但是当你按下左右箭头时,通过增大或减小角度来改变方向。 使用此代码,sqaure按正确的方向移动,但是当我按下按键时,方向不会改变。 import java.awt.*; import java.awt.Color; import javax.swing.Timer; import javax.swing.*; import java.awt.Graphics; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; import java.awt.event.KeyAdapter; public class Fields extends JPanel implements ActionListener, KeyListener{ Timer tm = new Timer(5, this); double x = 250, y = 250, vel = 0.2, angle = 90; public void paintComponent(Graphics g) { super.paintComponent(g); […]

更改ENTER键function

我想在JTable上更改ENTER键的默认操作,所以我使用了这段代码: table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), “Enter”); table.getActionMap().put(“Enter”, new AbstractAction() { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent ae) { //my action } } Tt正常工作。 我现在想要的是在我的行动之后改变行。 换句话说,执行enter键的默认操作。

使用KeyBIndings响应Button

我想用这些目标制作一个程序: 1)创建JButton 2)使用KeyBindings将按钮附加到键(“A”键)3)单击“A”时执行一些代码 这是我到目前为止的代码: // Imports Public class Test{ JButton button = new JButton(); //… Test(){ button.getInputMap().put(KeyStroke.getKeyStroke(“A”), “Pressed”); //… } // Where do I add the code that responds when button is pressed? } 现在,在按下按钮时,我在哪里添加我希望它执行的代码?

KeyBindings和KeyListeners之间的区别

如果您可以这样做,KeyBindings有什么意义: // Imports public void Test { JButton button1; JButton button2; JButton button3; … Test() { button1 = new JButton(); button1.addKeyListener(this); button2 = new JButton(); button2.addKeyListener(this); button3 = new JButton(); button3.addKeyListener(this); … } public void keyPressed(KeyEvent e) { } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { Object src = e.getSource(); if […]

如何设置按键按键绑定?

此应用程序的箭头键需要使独立于焦点的按下和释放事件。 设置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);

使用KeyListener进行Pong控件

我让我的乒乓球比赛工作遇到了一些麻烦,这个项目开始只是制作一个球有物理但后来我决定做更多的工作 我有那个球来回反弹,除了W和S之外的所有按键都不能控制玩家一,上下箭头键不控制玩家2 public void keyPressed(KeyEvent e){ if(e.getKeyCode() == e.VK_UP){ p2Y -= 3; System.out.println(“UP”); } if(e.getKeyCode() == e.VK_DOWN){ p2Y += 3; System.out.println(“Down”); } if(e.getKeyCode() == e.VK_W){ p1Y -= 3; System.out.println(“Up”); } if(e.getKeyCode() == e.VK_S){ p1Y += 3; System.out.println(“down”); } repaint(); } 它甚至不会显示系统打印消息 我不知道它只是代码的这一部分是问题还是它的其他地方 如果它在其他地方,则链接到此文件的其余部分http://pastebin.com/TJbLBxL7 整个代码: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; public class Pong […]

无论JComponent是什么焦点,你如何为JFrame进行键绑定?

我们如何为JFrame创建键绑定,而不管帧中的焦点是什么? 我已经看过这个问题: 你如何为java.awt.Frame创建键绑定? 我尝试为JFrame的根窗格设置输入映射,但是当焦点位于JTextArea上时,即使editable为false,它也不起作用。 使密钥绑定在整个JFrame中工作的最简单方法是什么?