java程序监听不到KeyListener,无法触发
来源:互联网 发布:淘宝 零食 知乎 编辑:程序博客网 时间:2024/05/23 01:14
首先,监听键盘相应的控件必须是获得焦点(focus)的情况下才能起作用.其次,如果你要实现的效果是焦点在任何其他控件上时(比如其他button)回车也能起作用,那么,这个动作的监听控件就不应该是你的登陆button,因为此时你的焦点在其他地方,你的登陆button并没有焦点,所以无法获得响应.要在这种情况下使回车键响应,必须将你的监听控件设置在你的panel或fram或更底层的级别上,这样只要焦点在此控件中任何一个button上,监听动作才能响应, 比如:Panel p = new Panel();JButton b1 = new JButton();JButton b2 = new JButton();p.add(b1);p.add(b2);p.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e){......} });p.setFocusable(true);//给p提供焦点.追问
您好,我看了一下你的代码,你可否告诉我为什么不加上setFocusable(true);这句,就不能触发事件呢?
回答
这是swing的焦点问题,JFrame 、JComponent、JLabel默认是不可以获得焦点,而且默认情况下,swing是把焦点分配给容器内可以获得焦点的第一个组件
import
javax.swing.*;
import
java.awt.*;
import
java.awt.event.*;
public
class
FrameEvent
extends
JFrame
implements
KeyListener {
JTextArea textarea =
new
JTextArea(
10
,
30
);
private
JLabel status;
public
FrameEvent() {
super
(
"KeyinEvent.java: "
);
Container c = getContentPane();
c.setLayout(
new
FlowLayout());
setFocusable(
true
);
textarea.setText(
"请按任意键:"
);
c.add(textarea);
addKeyListener(
this
);
setSize(
350
,
300
);
show();
this
.setDefaultCloseOperation(
3
);
}
public
void
keyPressed(KeyEvent e) {
// String line1="按键:"+e.getKeyChar()+"\n";
// String line2="a按键是否为Action键:"+e.isActionKey();
// @SuppressWarnings("static-access")
// String mKey=e.getKeyModifiersText(e.getModifiers());
// String line3="是否按下Modifier键"+(mKey.equals("")?"否":"是,其键为"+mKey);
// textarea.setText(line1+"\n"+line2+"\n"+line3+"\n");
if
(e.getKeyCode() == KeyEvent.VK_SPACE) {
System.out.println(
"123"
);
}
// char ch = e.getKeyChar();
// status.setText(String.valueOf(ch) + " " +(int)ch);
}
public
void
keyReleased(KeyEvent e) {
}
public
void
keyTyped(KeyEvent e) {
}
public
static
void
main(String args[]) {
FrameEvent app =
new
FrameEvent();
}
}
0 0
- java程序监听不到KeyListener,无法触发
- implements KeyListener了按键监听却监听不到
- Java中的键盘监听事件KeyListener
- java keylistener 问题
- Java GUI之KeyListener
- Java Swing事件处理——键盘事件及监听处理 KeyListener 按键测试
- 无法监听程序
- KeyListener
- KeyListener
- 通过JMS监听Oracle AQ,在数据库变化时触发执行Java程序
- ORACLE监听程序无法启动
- JAVA自动监听程序
- java web监听程序
- oracle监听程序无法启动,无监听程序
- 按键监听类KeyListener及适配器改良方案
- oracle 监听程序无法启动解决方法。
- Oracle11g 监听程序无法启动个案解决方法
- 监听程序无法分发客户机连接
- Hibernate的主键生成策略
- 闲扯
- 取消当点击GridView 的时候出现的那个黄色背景
- itoa的用法
- 19.9元包邮独享专区
- java程序监听不到KeyListener,无法触发
- C++2048Consose程序
- uva 10305 Ordering Tasks 【拓扑排序】
- POJ - 1251 Jungle Roads
- editplus中配置编译带包源码的命令
- Git的远程仓库--GitHub
- JAVA 图形用户界面--初次练手
- eclipse下tomcat运行maven出现ClassNotFoundException错误
- ZJNU NO GIRLS NO STOP