怎么把默认空格相当于鼠标点击按钮的功能,改为回车也可以 回车本来就可以起到点击按扭的功能吧,还想怎样呢?如果真想看到动态效果的话那,恐怕只有用到EventQueue类了,按回车键时发给按钮一个MouseEvent.MOUSE_DOWN消息,让他保持按下状态 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的大哥们,我又不是白——痴正因为一般的习惯是回车触发焦点所在的按钮,所以我才要改java 的 swing里默认的只能空格触发 填加个Listener行不?jButton4.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyChar()==e.VK_ENTER) { ..... } } } 回 :小地主这个我试过,一点作用也没有我想过一个方法给每个按钮都加个.addKeyListener然后在具体的方法里处理时先取得当前的焦点在哪个按钮上然后再决定触发不过不知道具体怎么写,而且我要改的地方可能还挺多,这样似乎有点麻烦 studying ....关注。 import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class KeyEventTest{ public static void main(String args[]) { JFrame aFrame = new KeyEventFrame(); aFrame.setSize(400, 300); aFrame.setLocationRelativeTo(null); aFrame.show(); }}class KeyEventFrame extends JFrame implements ActionListener{ JLabel message; public KeyEventFrame() { super("KeyEventTest"); Container contentPane = getContentPane(); JButton b_sure = new JButton("确定"); JButton b_cancel = new JButton("取消"); message = new JLabel("Hi, How are you?"); contentPane.add(message); Box buttonPane = Box.createHorizontalBox(); buttonPane.add(Box.createGlue()); buttonPane.add(b_sure); buttonPane.add(b_cancel); buttonPane.add(Box.createGlue()); contentPane.add(buttonPane, BorderLayout.SOUTH); getRootPane().registerKeyboardAction(new OKAction(message), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JButton.WHEN_IN_FOCUSED_WINDOW); getRootPane().registerKeyboardAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); } public void actionPerformed(ActionEvent e) { dispose(); }} class OKAction implements ActionListener{ JLabel aLabel; public OKAction(JLabel aLabel) { this.aLabel = aLabel; } public void actionPerformed(ActionEvent e) { aLabel.setForeground(Color.RED); aLabel.setText("Yes, you got it!"); }} flywind63(紫色的偶然)你给的对吗,兄弟给点解释吧,你给的例子只是侦听到了回车键啊 InputMap map = new InputMap(); map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "pressed"); map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true), "released"); UIManager.put("Button.focusInputMap", map);这样把空格屏蔽掉, 变成回车键响应.只要在程序运行之初设置一下, 所有的按钮都改变. bradwoo8621() 总算是可以实现我的做法:)虽然空格去掉了,结帖 如何用java代码在linux系统下建立文件夹 java swing 复选框 关于Applet实现问题! 一道程序题求解 object landscapes and lifetimes 一个比较菜的问题: 怎样让JDialog窗口无法改变大小? Jsp中数据库编程问题.编译无法通过. 替换字符串中的一段字符串.效率高的谁有? 关于文件传输加密的问题,期待您的指导 急:帮忙完成作业。 怎么安装jade啊 救救我吧 GGJJ们 现在软件公司写java都用什么工具?
正因为一般的习惯是回车触发焦点所在的按钮,所以我才要改
java 的 swing里默认的只能空格触发
jButton4.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if (e.getKeyChar()==e.VK_ENTER)
{
.....
}
}
}
这个我试过,一点作用也没有我想过一个方法
给每个按钮都加个.addKeyListener
然后在具体的方法里处理时先取得当前的焦点在哪个按钮上
然后再决定触发
不过不知道具体怎么写,而且我要改的地方可能还挺多,这样似乎有点麻烦
....
关注。
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;public class KeyEventTest
{
public static void main(String args[])
{
JFrame aFrame = new KeyEventFrame();
aFrame.setSize(400, 300);
aFrame.setLocationRelativeTo(null);
aFrame.show();
}
}class KeyEventFrame extends JFrame implements ActionListener
{
JLabel message;
public KeyEventFrame()
{
super("KeyEventTest");
Container contentPane = getContentPane();
JButton b_sure = new JButton("确定");
JButton b_cancel = new JButton("取消");
message = new JLabel("Hi, How are you?");
contentPane.add(message);
Box buttonPane = Box.createHorizontalBox();
buttonPane.add(Box.createGlue());
buttonPane.add(b_sure);
buttonPane.add(b_cancel);
buttonPane.add(Box.createGlue());
contentPane.add(buttonPane, BorderLayout.SOUTH);
getRootPane().registerKeyboardAction(new OKAction(message),
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0),
JButton.WHEN_IN_FOCUSED_WINDOW);
getRootPane().registerKeyboardAction(this,
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
JComponent.WHEN_IN_FOCUSED_WINDOW);
}
public void actionPerformed(ActionEvent e)
{
dispose();
}
}
class OKAction implements ActionListener
{
JLabel aLabel;
public OKAction(JLabel aLabel)
{
this.aLabel = aLabel;
}
public void actionPerformed(ActionEvent e)
{
aLabel.setForeground(Color.RED);
aLabel.setText("Yes, you got it!");
}
}
你给的对吗,兄弟给点解释吧,
你给的例子只是侦听到了回车键啊
map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "pressed");
map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true), "released");
UIManager.put("Button.focusInputMap", map);
这样把空格屏蔽掉, 变成回车键响应.
只要在程序运行之初设置一下, 所有的按钮都改变.
总算是可以实现我的做法:)虽然空格去掉了,结帖