Hallo zusammen,
ich muss euch mal wieder mit einer idiotisch einfachen Frage nerven:
Warum funktioniert mein repaint nicht?
Main class: BoxGame.java
Klasse PaintPanel.java:
ich hoffe mal, dass sich eine schnelle Lösung findet.
javampir
ich muss euch mal wieder mit einer idiotisch einfachen Frage nerven:
Warum funktioniert mein repaint nicht?
Main class: BoxGame.java
Java:
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import java.awt.event.WindowListener;
import java.awt.event.WindowEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JLabel;
public class BoxGame extends JFrame implements Runnable {
private final long serialVersionUID = 1L;
public static void main(String[] args) {
new BoxGame();
}
Thread th;
boolean up, down, right, left;
PaintPanel pp = new PaintPanel();
byte letter;
public BoxGame() {
super("BoxGame");
add(pp, "Center");
JLabel l = new JLabel("Label");
addWindowListener(new WindowListener() {
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
th.stop();
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
});
addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
JOptionPane.showMessageDialog(null, "Re", "Re", JOptionPane.INFORMATION_MESSAGE);
if(e.getKeyCode() == KeyEvent.VK_W) {
up = false;
} else if(e.getKeyCode() == KeyEvent.VK_S) {
down = false;
} else if(e.getKeyCode() == KeyEvent.VK_A) {
left = false;
} else if(e.getKeyCode() == KeyEvent.VK_D) {
right = false;
}
}
public void keyPressed(KeyEvent e) {
System.out.println("key");
if(e.getKeyCode() == KeyEvent.VK_W) {
up = true;
} else if(e.getKeyCode() == KeyEvent.VK_S) {
down = true;
} else if(e.getKeyCode() == KeyEvent.VK_A) {
left = true;
} else if(e.getKeyCode() == KeyEvent.VK_D) {
right = true;
}
}
});
up = false;
down = false;
left = false;
right = false;
th = new Thread(this);
th.start();
setExtendedState(JFrame.MAXIMIZED_BOTH);
setVisible(true);
}
@Override
public void run() {
boolean started = true;
while(started) {
checkKeys();
pp.repaint();
try {
Thread.sleep(100);
} catch (Exception ex) {}
}
}
private void checkKeys() {
if(up) {
pp.setLetter((byte) 1);
} else if(left) {
pp.setLetter((byte) 2);
} else if(down) {
pp.setLetter((byte) 3);
} else if(right) {
pp.setLetter((byte) 4);
} else if(!up) {
pp.setLetter((byte) 0);
} else if(!left) {
pp.setLetter((byte) 0);
} else if(!down) {
pp.setLetter((byte) 0);
} else if(!right) {
pp.setLetter((byte) 0);
}
}
}
Klasse PaintPanel.java:
Java:
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Toolkit;
public class PaintPanel extends JPanel {
byte letter = 0;
public PaintPanel() {
super();
setBackground(Color.red);
}
@Override
public void paintComponent(Graphics g) {
switch(letter) {
case 1: {
g.drawString("W", 20, 20);
} break;
case 2: {
g.drawString("A", 20, 20);
} break;
case 3: {
g.drawString("S", 20, 20);
} break;
case 4: {
g.drawString("D", 20, 20);
} break;
case 0: {
}
default: {}
}
}
public void setLetter(byte b) {
letter = b;
}
}
ich hoffe mal, dass sich eine schnelle Lösung findet.
javampir