I have 4 different classes of Code, but I had a problem with the main game part. Basically, as a cube you move around to get to a specific area, but for some reason using keybound labels it allows the label to leave the frame and basically disappear. Here's the code for the NewWindow
class which essentially contains the window and key.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Desktop.Action;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.border.Border;
public class NewWindow implements ActionListener{
JFrame frame;
JLabel label;
JButton quit = new JButton();
NewWindow.UpAction upAction;
NewWindow.LeftAction leftAction;
NewWindow.DownAction downAction;
NewWindow.RightAction rightAction;
NewWindow(){
JPanel level1 = new JPanel();
level1.setBackground(Color.CYAN);
level1.setBounds(810,410,75,75);
JPanel start = new JPanel();
start.setBackground(Color.CYAN);
start.setBounds(0,410,75,75);
Border border1 = BorderFactory.createLineBorder(Color.RED);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setSize(900,900);
frame.setLayout(null);
frame.getContentPane().setBackground(Color.BLACK); //c
frame.add(quit);
frame.setResizable(false);
label = new JLabel();
label.setBackground(Color.RED);
label.setBounds(0, 450, 25, 25);
label.setOpaque(true);
upAction = new UpAction();
downAction = new DownAction();
leftAction = new LeftAction();
rightAction = new RightAction();
label.getInputMap().put(KeyStroke.getKeyStroke('w'), "upAction");
label.getActionMap().put("upAction", upAction);
label.getInputMap().put(KeyStroke.getKeyStroke('s'), "downAction");
label.getActionMap().put("downAction", downAction);
label.getInputMap().put(KeyStroke.getKeyStroke('a'), "leftAction");
label.getActionMap().put("leftAction", leftAction);
label.getInputMap().put(KeyStroke.getKeyStroke('d'), "rightAction");
label.getActionMap().put("rightAction", rightAction);
quit.setBounds(0,0,100,40);
quit.setFocusable(false);
quit.setText("Quit");
quit.setFont(new Font("Comic Sans",Font.BOLD,25));
quit.setForeground(Color.RED);
quit.addActionListener(this);
quit.setBorder(border1);
quit.setBackground(Color.black);
ImageIcon image1 = new ImageIcon("3dCube.png");
frame.setVisible(true);
frame.add(label);
frame.add(start);
frame.setIconImage(image1.getImage());
frame.add(level1);
}
public class UpAction extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
label.setLocation(label.getX(), label.getY()-10);
}
}
public class LeftAction extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
label.setLocation(label.getX()-10, label.getY());
}
}
public class DownAction extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
label.setLocation(label.getX(), label.getY()+10);
}
}
public class RightAction extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
label.setLocation(label.getX()+10, label.getY());
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==quit) {
frame.dispose();
Launch myWindow = new Launch();
}
}
}