Hallo zusammen.
Ich bin gerade dabei das Grundprinzip für ein Spiel in Java zu erstellen. Jetzt habe ich beim Drehen eines JPanel allerdings Probleme. Das ist bestimmt recht leicht zu lösen, nur komm ich nicht drauf wie :rtfm:
Aussehen soll das Ergebnis wie in Screen1.
Das JFrame (Spielfeld) besteht dabei aus zwei JPanel (PanelSeite), wobei das obere Panel um 180° gedreht werden soll (struktur).
Wenn ich das Programm ausführe, sieht es allerdings - nachdem ich mit der Maus über den Frame fahre - aus wie in Screen2.
zum besseren Verständnis, mein Quelltext:



Ich bin gerade dabei das Grundprinzip für ein Spiel in Java zu erstellen. Jetzt habe ich beim Drehen eines JPanel allerdings Probleme. Das ist bestimmt recht leicht zu lösen, nur komm ich nicht drauf wie :rtfm:
Aussehen soll das Ergebnis wie in Screen1.
Das JFrame (Spielfeld) besteht dabei aus zwei JPanel (PanelSeite), wobei das obere Panel um 180° gedreht werden soll (struktur).
Wenn ich das Programm ausführe, sieht es allerdings - nachdem ich mit der Maus über den Frame fahre - aus wie in Screen2.
zum besseren Verständnis, mein Quelltext:
Java:
public class PanelSeite extends JPanel {
int angle;
public PanelSeite(int angle) {
this.angle = angle;
initComponents();
}
@Override
public void paintComponent(Graphics g) {
{
try {
Graphics2D g2d = (Graphics2D) g;
if (angle % 90 != 0) {
RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHints(qualityHints);
}
//center of rotation is center of the panel
int xRot = this.getWidth() / 2;
int yRot = this.getHeight() / 2;
g2d.rotate(Math.toRadians(angle), xRot, yRot);
//draw image centered in panel
super.paintComponent(g2d);
} catch (Exception ex) {
ex.printStackTrace(System.out);
}
public void initComponents(){ ... }
}
}}
Java:
public static void main(String[] args) {
// TODO code application logic here
JPanel p1 = new PanelSeite(140);
JPanel p2 = new PanelSeite(0);
JFrame f = new Spielfeld();
f.setSize(376, 509);
f.setLocationRelativeTo(null);
f.add(new PanelSeite(180));
f.add(new PanelSeite(0));
f.setVisible(true);
}


