这个JAVA程序为什么键盘监听器用不了 和Button 好像冲突了 怎么办
packageTestKey;importjava.awt.*;importjava.awt.event.*;classCloseFreamextendsWindowAd...
package TestKey;
import java.awt.*;
import java.awt.event.*;
class CloseFream extends WindowAdapter{
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
}
class Close extends KeyAdapter{
public void keyTyped(KeyEvent e) {
System.out.print(e.getKeyChar());
if(e.getKeyChar()=='a')
{
System.out.println(e.getKeyChar());
System.exit(0);
}
}
}
class MyFrame extends Frame implements ActionListener{
Button b1,b2;
public MyFrame() {
b1=new Button("click");
b2=new Button("quit");
setLayout(new FlowLayout());
add(b1);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
addKeyListener(new Close());
addWindowListener(new CloseFream());
setSize(100,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="click")
b1.setLabel("bushiba");
else if(e.getActionCommand()=="quit")
System.exit(0);
}
}
public class Testkey {
public static void main(String[] args) {
new MyFrame();
}
} 展开
import java.awt.*;
import java.awt.event.*;
class CloseFream extends WindowAdapter{
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
}
class Close extends KeyAdapter{
public void keyTyped(KeyEvent e) {
System.out.print(e.getKeyChar());
if(e.getKeyChar()=='a')
{
System.out.println(e.getKeyChar());
System.exit(0);
}
}
}
class MyFrame extends Frame implements ActionListener{
Button b1,b2;
public MyFrame() {
b1=new Button("click");
b2=new Button("quit");
setLayout(new FlowLayout());
add(b1);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
addKeyListener(new Close());
addWindowListener(new CloseFream());
setSize(100,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="click")
b1.setLabel("bushiba");
else if(e.getActionCommand()=="quit")
System.exit(0);
}
}
public class Testkey {
public static void main(String[] args) {
new MyFrame();
}
} 展开
1个回答
展开全部
在你的构造方法public MyFrame()中加上
this.requestFocus(); //加到方法的最后一行
另外Close 类的keyTyped方法里的
if(e.getKeyChar()=='a')//改成if(e.getKeyChar()==VK_A)
this.requestFocus(); //加到方法的最后一行
另外Close 类的keyTyped方法里的
if(e.getKeyChar()=='a')//改成if(e.getKeyChar()==VK_A)
追问
这个是可以了 但是运行以后如果点击了按钮 键盘监听器就又一次失效了
this.requestFocus();这个语句什么意思呀?
还有VK_A这是什么呀 不懂 嘿嘿 初学者
追答
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="click"){
b1.setLabel("bushiba");
this.requestFocus(); //这里再加上这一句
}
else if(e.getActionCommand()=="quit")
System.exit(0);
}
this.requestFocus();这句话是获取焦点的意思
因为的程序的焦点一开始再Button上,但是键盘监听在窗体上,
所以要重新把焦点设置在窗体上
你点击Button后,焦点又在Button上了
或者你在Button上也设置一个键盘监听也可以。
VK_A是键盘A的代码,其他的你多查查JAVA的API
你可以去看看KeyEvent 这个类的字段摘要
刚才看了一下,你写成'a'也是可以的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询