Malerarbeiten ein JPanel innerhalb eines Rahmens

Ich habe ein JPanel innerhalb eines Rahmens. Die Inhalte der JPanel soll aktualisiert werden mit jedem Aufruf paintComponent (das heißt durch repaint()), aber wenn ich es tun, da unten, ich sehe nur ein weißes Fenster.
(Bitte entschuldigen Sie die entstellten Einzug, Eclipse enthält alle möglichen seltsamen Sachen mit den tabs.)

private static void handleGUI() 
{       
    JFrame frame = new JFrame("Animation");
    frame.setPreferredSize(new Dimension(100, 100));

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Board b = new Board();

    frame.getContentPane().add(b);

    frame.pack();
    frame.setVisible(true);

    while(true)
    {
        System.out.println("Repainting panel");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
        }
        b.repaint();
    }
}

public class Board extends JPanel
{
public Board() { t=0; }

    private int t;

public void paintComponent(Graphics g) 
{
    super.paintComponent(g);

    ++t;

    /* Variables snipped */

    g.setColor(Color.white);
    g.drawOval(0, 0, width, height);

    BufferedImage image = ImageIO.read(new File(imagePath));
    g.drawImage(image, x(t), y(t));
    /* There's some more image and rectangle drawing ahead */
}

}

  • Tatsächlich, Eclipse enthält alle möglichen coolen Sachen mit tabs. 🙂 Einfach mit STRG-UMSCHALT-F, um formatieren Sie Ihre Quelle automatisch. Es wird produzieren eine konsistente Formatierung und Einrückung für Sie, entlastet Sie von der Last der es selbst tun.
  • was sind die Werte für x(0), y(0)? Das Bild konnte nicht von Ihrem panel. Führen Sie es im debugger? Der code kann eine exception werfen, die in den GUI-thread, wenn Ihr image nicht gefunden wird.
InformationsquelleAutor Joshua | 2011-01-09
Schreibe einen Kommentar