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(); } }