Auf Thema antworten

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:

[code=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(){ ... }

        }

    }}[/code]

[code=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);

    }[/code][ATTACH]7655[/ATTACH][ATTACH]7656[/ATTACH][ATTACH]7657[/ATTACH]



Oben