Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Como actualizar GUI en Java

Hola a todos,

Soy nuevo en el mundo de Java (poco menos de un mes), y no he conseguido dar con la solución a este problema:

1. Tengo que completar una GUI en BLUEJ que actualice la visualización los datos de una lista.
2. La GUI está definida en una clase y se sacan los datos de una lista que se encuentra en otra clase
2. No consigo encontrar en en la red una manera que me permita actualizar los datos haciendo clic en en boton llamado "actualizar". He probado con repaint(), pero no me da resultado, alguna sugerencia?

Aquí está mi código, agredezco cualquier ayuda de antemano...


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.List;
import java.util.ArrayList;

public class ListGUI extends JFrame
{
// El listado a representar y que está en la clase Lista.
private Lista listadoClaseLista;
// Una JList para guarda una lista de Strings.
private JList patientList;
// Un respositorio para JLIst
DefaultListModel<String> miguel;

/**
* Constructor para objetos de la clase Lista.
*/
public ListGUI (Lista listado)
{
listadoClaseLista = listado;

// Visualisacion de los elementos del listado.
ArrayList<String> lista2 = listadoClaseLista.conseguirListado();
listaModelo= new DefaultListModel<>();
for(String x : lista2){
listaModelo.addElement(x);
}
listaParaGui= new JList(listaModelo);
JScrollPane listScroller = new JScrollPane(listaParaGui);

// Un boton para actualizar el listado.
JButton actualizar= new JButton("Actualizar");
actualizar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
actualizarListado();
}
});
JPanel boton= new JPanel();
boton.add(actualizar);

// Colocacion del boton y el listado en una ventana
Container contenidos= getContentPane();
contenidos.setLayout(new GridLayout(2,1) );
contenidos.add(listScroller);
contenidos.add(boton);

// Muestra los detalles introducidos.
pack();
setVisible(true);
}

/**
*Metodo para actualizar el listado
*/
public void actualizarListado() {
ArrayList<String> lista2 = listadoClaseLista.conseguirListado();
listaModelo= new DefaultListModel<>();
for(String x : lista2){
listaModelo.addElement(x);
}
}

}

enero 13, 2013 | Registered Commenterriffdr

Este es el problema:

listaModelo= new DefaultListModel<>();

Creas una nueva lista, que nunca asocias con el JList. Por tanto el componente visual no se entera de lo que has añadido a ese modelo de lista.

enero 14, 2013 | Registered CommenterAbraham