以下代码本来想实现显示用户输入的字符,并可以用箭头键移动,不知道哪里错了,最后只有个空框架,还请大虾指教,不甚感激。import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class keyboard extends JFrame {
private KeyboardPanel keyboardpanel=new KeyboardPanel(); public void keyboard() {
getContentPane().add(keyboardpanel);
keyboardpanel.setFocusable(true);
}
public static void main (String[] args) {
keyboard frame=new keyboard();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
frame.setVisible(true);
}
}class KeyboardPanel extends JPanel implements KeyListener{
private int x=100;
private int y=100;
private char keychar='A';
public void Keyboardpanel(){
addKeyListener(this);
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
public void keyPressed(KeyEvent e){
switch(e.getKeyChar()){
case KeyEvent.VK_DOWN:y+=10;break;
case KeyEvent.VK_UP:y-=10;break;
case KeyEvent.VK_LEFT:x-=10;break;
case KeyEvent.VK_RIGHT:x+=10;break;
}
repaint();
} protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("TimesRoman",Font.PLAIN,24));
g.drawString(String.valueOf(keychar),x,y);
}}
import java.awt.event.*;
import javax.swing.*;
public class keyboard extends JFrame {
private KeyboardPanel keyboardpanel=new KeyboardPanel(); public void keyboard() {
getContentPane().add(keyboardpanel);
keyboardpanel.setFocusable(true);
}
public static void main (String[] args) {
keyboard frame=new keyboard();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
frame.setVisible(true);
}
}class KeyboardPanel extends JPanel implements KeyListener{
private int x=100;
private int y=100;
private char keychar='A';
public void Keyboardpanel(){
addKeyListener(this);
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
public void keyPressed(KeyEvent e){
switch(e.getKeyChar()){
case KeyEvent.VK_DOWN:y+=10;break;
case KeyEvent.VK_UP:y-=10;break;
case KeyEvent.VK_LEFT:x-=10;break;
case KeyEvent.VK_RIGHT:x+=10;break;
}
repaint();
} protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("TimesRoman",Font.PLAIN,24));
g.drawString(String.valueOf(keychar),x,y);
}}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货