首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个让label在背景图片上移动的程序,不知道为什么不能接受键盘的消息解决方法

2012-05-11 
一个让label在背景图片上移动的程序,不知道为什么不能接受键盘的消息Java codeimport javax.swing.JFrame

一个让label在背景图片上移动的程序,不知道为什么不能接受键盘的消息

Java code
import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class KeyMoveBackground extends JFrame{    private JLabel label;    public KeyMoveBackground(){        super();        this.setResizable(false);        this.setVisible(true);        Container c = this.getContentPane();        this.setTitle("方向键移动背景");        this.setBounds(100,100,500,375);        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        label = new JLabel();        ImageIcon icon = new ImageIcon(getClass().getResource("Penguins.jpg"));        ImageIcon glassImg = new ImageIcon(getClass().getResource("QQ截图20120303162426.png"));        label.setIcon(icon);        label.setSize(icon.getIconWidth(),icon.getIconHeight());        label.setLocation(-icon.getIconWidth()/3,-icon.getIconHeight()/3);        c.add(label);        JLabel glassLabel = new JLabel(glassImg);        JPanel glassPane = new JPanel(new BorderLayout());        glassPane.add(glassLabel);        glassPane.setOpaque(false);        this.setGlassPane(glassPane);        this.getGlassPane().setVisible(true);        this.addKeyListener(new KeyAdapter(){            public void keyPressed(KeyEvent e){                do_label_keyPress(e);            }        });            }         protected void do_label_keyPress(final KeyEvent e){        int code = e.getKeyCode();        Point location = label.getLocation();        int step=3;        switch(code){        case KeyEvent.VK_RIGHT:            if(location.x > (getWidth() - label.getWidth()))                label.setLocation(location.x-step,location.y);            break;        case KeyEvent.VK_LEFT:            if(location.x<0)                label.setLocation(location.x+step,location.y);            break;        case KeyEvent.VK_UP:            if(location.y < 0)                label.setLocation(location.x,location.y+step);            break;        case KeyEvent.VK_DOWN:            if(location.y > (getHeight()-label.getHeight()))                label.setLocation(location.x, location.y+step);            break;        default:            break;        }    }    public static void main(String[] args) {        // TODO Auto-generated method stub        new KeyMoveBackground();    }}


[解决办法]
把do_label_keyPress里面的if语句去掉就能移动了,应该是楼主你的if语句有问题吧

热点排行