我写了如下两段代码:
代码段一:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class KeyHandle extends JFrame{
public KeyHandle(){
//当前窗口添加键盘点击事件
this.addKeyListener(new java.awt.event.KeyAdapter(){
public void keyTyped(KeyEvent e) {
this_keyTyped();
}
}
);
this.setSize(300,400);
}
//键盘事件处理代码
private void this_keyTyped(){
System.out.println("Key is Pressed!!!!");
}
//主程序入口
public static void main(String args[]){
KeyHandle keyHandle = new KeyHandle();
keyHandle.show();
}
}
测试:发现上述代码段能正常响应键盘事件(焦点在窗口上,按字母键有输出)!代码段二:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class KeyHandle extends JWindow{
public KeyHandle(){
//当前窗口添加键盘点击事件
this.addKeyListener(new java.awt.event.KeyAdapter(){
public void keyTyped(KeyEvent e) {
this_keyTyped();
}
}
);
this.setSize(300,400);
}
//键盘事件处理代码
private void this_keyTyped(){
System.out.println("Key is Pressed!!!!");
}
//主程序入口
public static void main(String args[]){
KeyHandle keyHandle = new KeyHandle();
keyHandle.show();
}
}
测试:发现对键盘的操作无反应,不相应任何字母按键操作!
难道是JWindow不支持键盘事件吗?但测试发现JWindows 支持鼠标事件?那第二段代码不相应键盘键,到底错在那里?应如何修改?才能在Jwindow里相应键盘事件?
代码段一:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class KeyHandle extends JFrame{
public KeyHandle(){
//当前窗口添加键盘点击事件
this.addKeyListener(new java.awt.event.KeyAdapter(){
public void keyTyped(KeyEvent e) {
this_keyTyped();
}
}
);
this.setSize(300,400);
}
//键盘事件处理代码
private void this_keyTyped(){
System.out.println("Key is Pressed!!!!");
}
//主程序入口
public static void main(String args[]){
KeyHandle keyHandle = new KeyHandle();
keyHandle.show();
}
}
测试:发现上述代码段能正常响应键盘事件(焦点在窗口上,按字母键有输出)!代码段二:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class KeyHandle extends JWindow{
public KeyHandle(){
//当前窗口添加键盘点击事件
this.addKeyListener(new java.awt.event.KeyAdapter(){
public void keyTyped(KeyEvent e) {
this_keyTyped();
}
}
);
this.setSize(300,400);
}
//键盘事件处理代码
private void this_keyTyped(){
System.out.println("Key is Pressed!!!!");
}
//主程序入口
public static void main(String args[]){
KeyHandle keyHandle = new KeyHandle();
keyHandle.show();
}
}
测试:发现对键盘的操作无反应,不相应任何字母按键操作!
难道是JWindow不支持键盘事件吗?但测试发现JWindows 支持鼠标事件?那第二段代码不相应键盘键,到底错在那里?应如何修改?才能在Jwindow里相应键盘事件?
this.setSize(300,400);
后面加上一句:this.setBackground(Color.red);
你会发现你看到红色是一闪而过但出现的不是红色表象,说明设置起作用了;
再加上:this.getContentPane().setBackground(Color.red);
这样就是红色窗体了,说明是你的程序未满足keyTyped()条件一已之见