模拟照相机取镜

键盘控制图片移动
本文介绍了一个简单的Java Swing应用,通过方向键控制图片在窗口中移动。利用KeyEvent监听方向键事件,实现图片位置更新,并展示了完整的代码实现。
用键盘控制图片进行移动
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);
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值