관리 메뉴

취미개발 블로그와 마음수양

마우스나 키보드로 네모박스 움직이기.. 본문

Language/java소스

마우스나 키보드로 네모박스 움직이기..

아라한사 2014. 4. 15. 11:37


아 재밌다....ㅋㅋㅋ

패널 따로 해서 이미지 처리하는게..관건이었다. 키보드도 관건이었고... 음..




package 챕16이벤트;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Quest04 extends JFrame implements ActionListener{
	static int x = 230, y = 40;
	JPanel panel1 = new MyPanel();
	JPanel panel2 = new JPanel();
	JButton button1, button2;

	class MyPanel extends JPanel {
		public MyPanel(){
			addKeyListener(new KeyListener(){
				public void keyPressed(KeyEvent e){
					System.out.println("키가 눌려졌다! ");
					int keycode = e.getKeyCode();
					switch(keycode){
					case KeyEvent.VK_LEFT : x-=20; repaint(); break;
					case KeyEvent.VK_RIGHT : x+= 20; repaint(); break;
					}
				}
				@Override
				public void keyReleased(KeyEvent arg0) {
					//System.out.println("키가 눌려졌다! ");
				}

				@Override
				public void keyTyped(KeyEvent arg0) {
					//System.out.println("키가 눌려졌다! ");
				}
			});
			this.requestFocus();
			setFocusable(true);
		}

		public void paint(Graphics g) {
			super.paint(g);
			g.setColor(Color.black);
			g.fillRect(x, y, 40, 200);
		}

	}

	Quest04() {
		setSize(500, 400);
		setTitle("박스 움직이기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new BorderLayout());

		// 패널설정
		panel1.setSize(500, 400);
		panel1.setBackground(Color.yellow);
		panel2.setSize(500, 100);
		panel2.setBackground(Color.red);
		panel2.setLayout(new FlowLayout());

		// 패널1설정은 이미지패널로 위에서 따로 클래스 처리

		// 패널2설정
		button1 = new JButton("왼쪽으로 이동");
		button2 = new JButton("오른쪽으로 이동");
		panel2.add(button1);
		panel2.add(button2);
		button1.addActionListener(this);
		button2.addActionListener(this);

		// 최종 실행
		add(panel1, BorderLayout.CENTER);
		add(panel2, BorderLayout.SOUTH);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent g) {
		if (g.getSource() == button1) {
			System.out.println("왼쪽으로 이동 입력됨");
			x -= 20;
			repaint();
		}
		if (g.getSource() == button2) {
			System.out.println("오른쪽으로 이동 입력됨");
			x += 20;
			repaint();
		}
	}

	public static void main(String[] args) {
		new Quest04();
	}

}