用键盘控制图片进行移动
import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class KeyMoveBackground extends JFrame{
JLabel label;//声, 标签
public KeyMoveBackground(){//构早方法
super();
setResizable(false);//禁止调整窗体大小
getContentPane().setLayout(null);//设置空布局
setTitle("方向键移动背景");
setBounds(100,100,500,375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label=new JLabel();//创建标签
ImageIcon icon=new ImageIcon(getClass().getResource("1.jpg"));
ImageIcon glassImg=new ImageIcon(getClass().getResource("2.jpg"));
label.setIcon(icon);//设置标签使用背景图片
label.setSize(icon.getIconWidth(),icon.getIconHeight());//是标签与图像同步大小
label.setLocation(-icon.getIconWidth()/3,-icon.getIconHeight()/3);//设置标签默认位置
addKeyListener(new KeyAdapter(){//窗体添加按键事件)
public void keyPressed(final KeyEvent e){
do_label_keyPressed(e);//条用事件处理方法
}
});
getContentPane().add(label);//将被标签添加到容器
JLabel glassLabel=new JLabel(glassImg);//创建取景框标签
JPanel glassPane=new JPanel(new BorderLayout());
glassPane.add(glassLabel,BorderLayout.CENTER);//添加取景标签到玻璃面板
glassPane.setOpaque(false);//饰面板透明
setGlassPane(glassPane);//设置窗体使用玻璃面板
getGlassPane().setVisible(true);
}
protected void do_label_keyPressed(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_DOWN:
if(location.y>(getHeight()-label.getHeight()))
label.setLocation(location.x,location.y-step);
break;
case KeyEvent.VK_UP:
if(location.y<0)
label.setLocation(location.x,location.y+step);
break;
default:
break;
}
}
public static void main(String[] args) {
new KeyMoveBackground().setVisible(true);
}
}