Moving an arrow in java GUI

Problem:

Create a java application that changes an arrow based on the user's input.

You're responsible for adding the pictures of the arrow.

Output:



Prompt Picture Description





Solution:

//****************ArrowControlFrame.java********************/
import javax.swing.JFrame;

public class ArrowControlFrame {

 
 public static void main(String[] args) {
  
  JFrame frame = new JFrame("");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  frame.getContentPane().add(new ArrowControlPanel());
  frame.pack();
  frame.setResizable(false);
  frame.setLocationRelativeTo(null);
  frame.setVisible(true);
 }

}
//****************ArrowControlPanel.java****************/
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class ArrowControlPanel extends JPanel {

 private ImageIcon up, down, left, right, current;
 private int x, y;
 private final int JUMP = 10;
 private final int WIDTH = 400, HEIGHT = 300;

 public ArrowControlPanel() {

  up = new ImageIcon(getClass().getResource("arrowUp.gif"));
  down = new ImageIcon(getClass().getResource("arrowDown.gif"));
  left = new ImageIcon(getClass().getResource("arrowLeft.gif"));
  right = new ImageIcon(getClass().getResource("arrowRight.gif"));

  current = up;

  x = WIDTH / 2;
  y = HEIGHT / 2;

  addKeyListener(new KeyEventHandler());

  setPreferredSize(new Dimension(WIDTH, HEIGHT));
  setBackground(Color.BLACK);
  setFocusable(true);

 }
 @Override
 protected void paintComponent(Graphics g) {
 super.paintComponent(g);
 current.paintIcon(this, g, x, y);
 }
 
 
 private class KeyEventHandler implements KeyListener {

  @Override
  public void keyPressed(KeyEvent e) {
   switch(e.getKeyCode()) {
   case  KeyEvent.VK_UP: 
    current = up;
    y -= JUMP;
    
    break;
   case KeyEvent.VK_DOWN:
   current = down;
   y += JUMP;
    break;
   case KeyEvent.VK_RIGHT:
   current = right;
   x+= JUMP;
    break;
    
   case KeyEvent.VK_LEFT: 
   current = left;
   x-= JUMP;
    break;
   }
   repaint();
  }

  @Override
  public void keyReleased(KeyEvent e) {
   
  
   
  }

  @Override
  public void keyTyped(KeyEvent e) {
 
   
  }


  
 }

}

No comments:

Post a Comment