把按钮去掉就可以监听了,为什么,怎么修改能让有按钮在也可以监听?
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.JFrame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class why implements ActionListener,KeyListener{
JFrame jframe;
JPanel panel;
public why(){
jframe = new JFrame("why");
panel=new JPanel();
jframe.getContentPane().add(panel);
panel.setLayout(new GridBagLayout());
JButton why =new JButton("why");
panel.add(why);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setSize(600,400);
jframe.addKeyListener(this);
jframe.setVisible(true);
}
public void actionPerformed(ActionEvent event){
}
public void keyPressed(KeyEvent e){
System.out.println(" "+e.getKeyChar());
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
public static void main(String[] args){
new why();
}
}
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.JFrame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class why implements ActionListener,KeyListener{
JFrame jframe;
JPanel panel;
public why(){
jframe = new JFrame("why");
panel=new JPanel();
jframe.getContentPane().add(panel);
panel.setLayout(new GridBagLayout());
JButton why =new JButton("why");
panel.add(why);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setSize(600,400);
jframe.addKeyListener(this);
jframe.setVisible(true);
}
public void actionPerformed(ActionEvent event){
}
public void keyPressed(KeyEvent e){
System.out.println(" "+e.getKeyChar());
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
public static void main(String[] args){
new why();
}
}
why.setFocusable(false);
这样就OK了。
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.JFrame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;public class why implements ActionListener, KeyListener {
JFrame jframe;
JPanel panel; public why() {
jframe = new JFrame("why");
panel = new JPanel();
jframe.getContentPane().add(panel);
panel.setLayout(new GridBagLayout());
JButton why = new JButton("why");
panel.add(why);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setSize(600, 400);
jframe.addKeyListener(this);
why.setFocusable(false);//加上这句就行了,原因是焦点在JButton上,所以键盘事件没反应
jframe.setVisible(true);
} public void actionPerformed(ActionEvent event) {
} public void keyPressed(KeyEvent e) {
System.out.println(" " + e.getKeyChar());
} public void keyReleased(KeyEvent e) {
} public void keyTyped(KeyEvent e) {
} public static void main(String[] args) {
new why();
}
}