学习KeyEvent的时候,想编写一个小程序用来接受输入的键,然后显示在panel上,但是编译运行该程序,却没有反应,不晓得错在哪里,希望高手能给出解答,十分感谢!
代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyEventTest
{
public static void main(String[] args)
{
KeyEventFrame frame=new KeyEventFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}class KeyEventFrame extends JFrame
{
public KeyEventFrame()
{
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
KeyEventPanel panel=new KeyEventPanel();
add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=200;
}class KeyEventPanel extends JPanel
{
String enter="";
private int intX=0;
private int intY=0;
public KeyEventPanel()
{
addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e)
{
enter=e.getKeyText(e.getKeyCode());
repaint();
if(intX<300)
intX+=15;
else
{
intY+=15;
intX=0;
}
}
});
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
g2.drawString(enter,intX,intY);
}
}
代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyEventTest
{
public static void main(String[] args)
{
KeyEventFrame frame=new KeyEventFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}class KeyEventFrame extends JFrame
{
public KeyEventFrame()
{
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
KeyEventPanel panel=new KeyEventPanel();
add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=200;
}class KeyEventPanel extends JPanel
{
String enter="";
private int intX=0;
private int intY=0;
public KeyEventPanel()
{
addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e)
{
enter=e.getKeyText(e.getKeyCode());
repaint();
if(intX<300)
intX+=15;
else
{
intY+=15;
intX=0;
}
}
});
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
g2.drawString(enter,intX,intY);
}
}
package com.qu.bean;
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class KeyEventTest
{
public static void main(String[] args)
{
KeyEventFrame frame=new KeyEventFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
} class KeyEventFrame extends JFrame
{
public KeyEventFrame()
{
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
KeyEventPanel panel=new KeyEventPanel();
add(panel);
}
public static final int DEFAULT_WIDTH=500;
public static final int DEFAULT_HEIGHT=500;
} class KeyEventPanel extends JPanel
{
String enter="";
private int intX=0;
private int intY=0;
private JTextField txtA;
private JTextField txtB;
public KeyEventPanel()
{
this.setLayout(null);
txtA = new JTextField(20);
txtB = new JTextField(20);
txtA.setBounds(120, 42, 150, 30);
txtB.setBounds(120, 72, 150, 30);
this.add(txtA);
this.add(txtB);
final StringBuffer str = new StringBuffer();
txtA.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e)
{
enter=e.getKeyText(e.getKeyCode());
System.out.println(enter);
str.append(""+ e.getKeyChar());
txtB.setText(str.toString());
repaint();
if(intX <300)
intX+=15;
else
{
intY+=15;
intX=0;
}
} @Override
public void keyPressed(KeyEvent e) {
} @Override
public void keyReleased(KeyEvent e) {
}
});
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
g2.drawString(enter,intX,intY);
}
}
import java.awt.event.*;
import javax.swing.*;public class KeyEventTest {
KeyEventPanel panel = null; KeyEventFrame frame = null; public static void main(String[] args) {
KeyEventTest mKeyEventTest = new KeyEventTest();
mKeyEventTest.init();
} public void init() {
frame = new KeyEventFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame
.setSize(KeyEventFrame.DEFAULT_WIDTH,
KeyEventFrame.DEFAULT_HEIGHT);
panel = new KeyEventPanel();
frame.getContentPane().add(panel);
frame.setVisible(true);
//这句一定要加,只有将焦点放入panel才可监听到键盘
panel.requestFocusInWindow();
} class KeyEventFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L; public KeyEventFrame() { } public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200;
} class KeyEventPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L; private int intX = 0; private int intY = 30; String enter = ""; public KeyEventPanel() {
addKeyListener(new KeyAdapter() {
//注意这里:
// 对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,getKeyCode
// 方法总是返回 VK_UNDEFINED。
// 因此此处应用按下键和释放键函数处理
public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) {
char enterChar[] = { e.getKeyChar() };
String tmp = new String(enterChar);
enter = enter + tmp;
repaint();
} public void keyReleased(KeyEvent e) {
} });
} public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.BLACK);
g.drawString(enter, intX, intY);
}
}
}