JFrame mit mehreren Ebenen

Ich habe ein Fenster, das hat zwei Ebenen: einem statischen hintergrund und einem Vordergrund, der enthält sich bewegende Objekte. Meine Idee ist, zeichnen Sie den hintergrund nur einmal (weil es nicht zu ändern), so dass ich die wechselnden panel transparent und fügen Sie es auf der Oberseite der statischen hintergrund. Hier ist der code für diese:

public static void main(String[] args) {
    JPanel changingPanel = new JPanel() {

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.RED);
            g.fillRect(100, 100, 100, 100);
        }
    };
    changingPanel.setOpaque(false);

    JPanel staticPanel = new JPanel();
    staticPanel.setBackground(Color.BLUE);
    staticPanel.setLayout(new BorderLayout());
    staticPanel.add(changingPanel);

    JFrame frame = new JFrame();
    frame.add(staticPanel);
    frame.setSize(800, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

Dieses Stück code gibt mir die richtige Bild, das ich will, aber jedes mal, wenn ich repaint changingPanel, staticPanel wird neu gestrichen (die offensichtlich gegen die ganze Idee der Malerei der statischen panel nur einmal). Kann jemand mir zeigen, was falsch ist?

Zur info ich bin mit dem javax.swing.Timer neu berechnen und aktualisieren die wechselnden panel-24 mal pro Sekunde.

InformationsquelleAutor phunehehe | 2010-04-23
Schreibe einen Kommentar