请大家帮我看下下面我写的代码,看看有什么错误啊?为什么总是实现不了按下“1”键显示“hello”,按下“2”键显示“goodbye”,谢谢import java.awt.*;
import java.awt.event.*;
import javax.swing.JTextArea;
import javax.swing.JFrame;public class test extends JFrame implements KeyListener{
JTextArea text_Area;
test(String title){
super(title);
int width = 200;
int height = 300;
Point center = GraphicsEnvironment.getLocalGraphicsEnvironment ().getCenterPoint ();
setBounds(center.x - width/2, center.y - height/2, width, height);
setLayout(new GridLayout(2, 1, 0, 0));
JPanel text_Panel = new JPanel();
add(text_Panel);
text_Area = new JTextArea();
text_Area.setEditable (false);
text_Panel.add (text_Area);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
public void keyPressed(KeyEvent e){
switch(e.getKeyCode ()){
case KeyEvent.VK_1:
text_Area.setText ("Hello");
break;
case KeyEvent.VK_2:
text_Area.setText ("goodbye");
break;
}
}
public static void main(String[] args){
test window = new test("Test");
window.addKeyListener (window);
}
}
import java.awt.event.*;
import javax.swing.JTextArea;
import javax.swing.JFrame;public class test extends JFrame implements KeyListener{
JTextArea text_Area;
test(String title){
super(title);
int width = 200;
int height = 300;
Point center = GraphicsEnvironment.getLocalGraphicsEnvironment ().getCenterPoint ();
setBounds(center.x - width/2, center.y - height/2, width, height);
setLayout(new GridLayout(2, 1, 0, 0));
JPanel text_Panel = new JPanel();
add(text_Panel);
text_Area = new JTextArea();
text_Area.setEditable (false);
text_Panel.add (text_Area);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
public void keyPressed(KeyEvent e){
switch(e.getKeyCode ()){
case KeyEvent.VK_1:
text_Area.setText ("Hello");
break;
case KeyEvent.VK_2:
text_Area.setText ("goodbye");
break;
}
}
public static void main(String[] args){
test window = new test("Test");
window.addKeyListener (window);
}
}
解决方案 »
- SCJP题目求助:抽象类
- 再来讨论一下Fackbook的那道面试题
- 失去焦点时 保持文字的高亮
- 从端口读数据画实时曲线时抢占端口问题
- 关于jdom怎么解析XML流
- server是c写的,client是java写的,进行socket通信问题
- 求教鼠标响应,急!!!
- 打印对话框里属性设置的处理,急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~急~~~~~
- Socket编程的一个疑问
- 有关label的上的text实现两边对齐的问题!
- 有点好玩的中文编程(存为:上帝造人.java),问:如何将字符赋给姓名?
- 请教关于java文件修改的问题,希望大家给出出注意,分不够可以加。
JFrame一得到焦点马上会失去焦点,焦点就交给了内部面板了.!
代码通过编译.!
import java.awt.*;
import java.awt.event.*;
import javax.swing.JTextArea;
import javax.swing.JFrame;
import javax.swing.JPanel;public class test extends JFrame /*implements KeyListener*/{
JTextArea text_Area;
test(String title){
super(title);
int width = 200;
int height = 300;
Point center = GraphicsEnvironment.getLocalGraphicsEnvironment ().getCenterPoint ();
setBounds(center.x - width/2, center.y - height/2, width, height);
setLayout(new GridLayout(2, 1, 0, 0));
JPanel text_Panel = new JPanel();
add(text_Panel);
text_Area = new JTextArea();
text_Area.setEditable(false);
text_Panel.add (text_Area);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
System.out.println ("cs");
System.out.println ((char)KeyEvent.VK_1);
text_Area.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
System.out.println ("C");
switch(e.getKeyCode()) {
case KeyEvent.VK_1:
text_Area.setText ("Hello");
System.out.println ("H");
break;
case KeyEvent.VK_2:
text_Area.setText ("GoodBye");
System.out.println ("8");
break;
}
}
});
System.out.println ("123123132");
}
public static void main(String[] args){
test window = new test("Test");
}
}
不过还有一个问题,我在这个窗口的class中加了
JPanel button_Panel = new JPanel();
button_Panel.setLayout (new GridLayout(1, 2, 0, 10));
add(button_Panel);
JButton hello_Button = new JButton("Hello");
button_Panel.add (hello_Button);
hello_Button.addActionListener (new ComTest(ComTest.hello_button, this));
JButton goodbye_Button = new JButton("Goodbye");
button_Panel.add (goodbye_Button);
goodbye_Button.addActionListener (new ComTest(ComTest.goodbye_button, this));//ComTest.class
import java.awt.*;
import java.awt.event.*;public class ComTest implements ActionListener{
static final int hello_button = 1;
static final int goodbye_button = 2;
int curButton;
test window;
ComTest(int curButton, test window){
this.curButton = curButton;
this.window = window;
}
public void actionPerformed(ActionEvent e){
switch(curButton){
case hello_button:
window.text_Area.setText ("Hello");
break;
case goodbye_button:
window.text_Area.setText ("Goodbye");
break;
}
}
}为什么创建出窗口后,在没有单击两个button前,可以实现按“1”显示“hello”,按“2”显示“goodbye”的功能,可是当点击过两个button后,再按“1”或“2”键就没有反映了呢?