Frage

Ich brauche auf einem JPanel verschiedene Zeichnungen anzuzeigen. Ich habe die Zeichnungsdateien in ein Array setzen, aber wenn ich es mit einer Taste geändert, die JPanel zeigt nur erste Zeichnung und auf die nächste Zeichnung nicht ändern ...

Ich habe panel.revalidate () aufgerufen, aber es funktioniert nicht.

Dies ist das Segment der Code, den ich verwendet, aber nicht funktioniert. Die JPanel Anzeige war statisch.

    String[] a = {"image1.txt","image2.txt","image3.txt"};
    List<String> files = Arrays.asList(a);


    public void actionPerformed(ActionEvent e) {
    if (e.getSource() == answer1){
        fileNumber++;
        //call other class for painting (files=array files, fileNumber=index of the array)  
        draw = new drawingPanel(files,fileNumber);
        panel.add(draw);
    }
    panel.revalidate();
    panel.repaint();
}
War es hilfreich?

Lösung

Sie könnten versuchen, einen Verweis auf Ihre drawingPanel halten und mit der Aufforderung remove () auf dem bestehenden drawingPanel, bevor es erneut hinzuzufügen. Nach dem JPanel JavaDoc, das Layout Flow standardmäßig - welche nicht ersetzen Sie das Bild, wie Sie beabsichtigen, sondern stattdessen die nächste drawingPanel rechts von der vorherigen platzieren. (Was passiert, wenn Sie die Größe des Fensters?)

Durch die Art und Weise, wie gehen Sie den Fall, dass Sie nach dem letzten Bild in der Reihe bekommen?

Andere Tipps

Anzeige nur einer nach dem anderen zu zeichnen? Wenn ja, können Sie ein Cardlayout versuchen verwenden, so können Sie leicht zwischen Zeichnungen wechseln. Siehe http://java.sun.com/docs/books /tutorial/uiswing/layout/card.html für ein Beispiel.

Ich hatte ein ähnliches Problem den anderen Tag dynamisch versuchen, verschiedene Tasten auf meinem UI angezeigt werden je nachdem, welche Registerkarte eines JTabbedPane der Benutzer gerichtet. Cardlayout war genau das Richtige, um die Dinge einfach zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top