Pregunta

Necesito para mostrar dibujos diferentes en un JPanel. He puesto los archivos de dibujo en una matriz, pero cuando lo cambié el uso de un botón, el JPanel sólo muestra primer dibujo y no cambia para el próximo sorteo ...

Me han llamado panel.revalidate (), pero no funciona.

Este es el segmento del código que utilicé pero no funciona. La pantalla JPanel era estático.

    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();
}
¿Fue útil?

Solución

Es posible que trate de mantener una referencia a su drawingPanel y llamando remove () en el drawingPanel existente antes de volver a agregarlo. De acuerdo con la JPanel JavaDoc, la disposición es FlowLayout por defecto - que no lo hará reemplazar la imagen como si la intención, sino que en su lugar coloque el siguiente drawingPanel a la derecha de la anterior. (Lo que sucede cuando se cambia el tamaño de la ventana?)

Por cierto, ¿cómo manejar el caso en el que llegue más allá de la última imagen de la matriz?

Otros consejos

¿Está mostrando solamente un dibujo a la vez? Si es así, es posible que desee intentar usar un CardLayout, por lo que puede cambiar entre dibujos fácilmente. Ver http://java.sun.com/docs/books /tutorial/uiswing/layout/card.html para un ejemplo.

Yo tenía un problema similar, el otro día tratando de mostrar dinámicamente diferentes botones de mi interfaz de usuario dependiendo de qué pestaña de un JTabbedPane el usuario escogió. CardLayout era justo lo que para facilitar las cosas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top