Question

Je dois montrer différents dessins sur un JPanel. J'ai mis les fichiers de dessin dans un tableau, mais quand je l'ai changé à l'aide d'un bouton, le JPanel affiche seulement le premier dessin et ne change pas au dessin suivant ...

J'ai appelé panel.revalidate (), mais cela ne fonctionne pas.

Ceci est le segment du code que je mais ne fonctionne pas. L'affichage JPanel était statique.

    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();
}
Était-ce utile?

La solution

Vous pouvez essayer de garder une référence à votre drawingPanel et appelant remove () sur le drawingPanel existant avant de l'ajouter de. Selon le JPanel JavaDoc, la mise en page est par défaut FlowLayout - qui ne sera pas remplacer l'image comme vous l'intention, mais au lieu de placer la prochaine drawingPanel à droite de la précédente. (Ce qui se passe lorsque vous redimensionnez la fenêtre?)

Par ailleurs, comment voulez-vous gérer le cas où vous avez passé la dernière image dans le tableau?

Autres conseils

Vous ne montre qu'une dessin à la fois? Dans ce cas, vous pouvez essayer d'utiliser un CardLayout, de sorte que vous pouvez basculer entre les dessins facilement. Voir http://java.sun.com/docs/books /tutorial/uiswing/layout/card.html pour un exemple.

J'ai eu un problème similaire, l'autre jour en essayant d'afficher dynamiquement différents boutons sur mon interface utilisateur en fonction d'un onglet qui JTabbedPane l'utilisateur choisi. CardLayout était juste la chose pour rendre les choses faciles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top