listas

eduardo
17 de Mayo del 2005
hola, tengo un problema con las jlist, estoy haciendo un programa donde una lista se carga mediante la opcion escogida de un combo, es decir el usuario pulsa en una opcion del combo y se le cargan los datos en la lista, el problema que tengo y todavia no doy con la solucion es que al ejecutar por primera vez el programa funciona correctamente, pero despues al pulsar en alguna opcion del combo, la lista no se carga. Las listas las he creado mediante arrays dinamicos, los cuales al escoger una opcion del combo, se cargan correctamente y no se porque la lista no lo hace, haber si alguien me puede ayudar o decirme donde encontrar algun ejemplo. gracias.

eduardo
17 de Mayo del 2005
hola lo he probado haciendo que mi lista sea de tipo defaultlistmodel, pero sigue sin funcionar, yo pongo aqui el codigo haber si alguien me puede decir que me falta. Gracias.

package proyecto;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.io.*;
import com.borland.jbcl.layout.XYConstraints;
import com.borland.jbcl.layout.XYLayout;

class Listas
{
DefaultListModel modelo=new DefaultListModel();
JPanel listas=new JPanel();
GridLayout gdlayout=new GridLayout(1,3);
ResultSet rs = null;
PreparedStatement stmr = null;
ResultSetMetaData m = null;
JOptionPane mensaje = new JOptionPane();
String sql = "";
JFrame fr = new JFrame();
JPanel norte = new JPanel();
JPanel sur = new JPanel();
JPanel este = new JPanel();
JPanel oeste = new JPanel();
JPanel centro = new JPanel();
XYLayout layoutcentro=new XYLayout();
int indice=0;
JComboBox combo=new JComboBox();
Connection conn=null;

public Listas()
{
listas.setLayout(gdlayout);
fr.setTitle("Datos Tablas");
fr.getContentPane().add(norte, BorderLayout.NORTH);
fr.getContentPane().add(sur, BorderLayout.SOUTH);
fr.getContentPane().add(este, BorderLayout.EAST);
fr.getContentPane().add(oeste, BorderLayout.WEST);
centro.setLayout(layoutcentro);
centro.add(combo);
combo.addItem("a");
combo.addItem("b");
combo.addItem("c");
combo.addActionListener(new BotonTablas_ActionListener(this));
fr.show();
fr.setExtendedState(fr.MAXIMIZED_BOTH);
try
{
ConexionAutomatica();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
ejecutar();
}
catch(SQLException e){}
}
public void ConexionAutomatica() throws IOException
{
String dsn = new String ("jdbc:mysql://localhost/igr");
try
{
Class.forName ("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
try
{
conn=DriverManager.getConnection(dsn,"igr","igr");
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public void ejecutar()throws SQLException
{
int filas = 0;
try
{
sql="select * from presto";
stmr = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmr.executeQuery();
rs.beforeFirst();
rs.last();
filas = rs.getRow();
rs.first();
stmr = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmr.executeQuery();
m = rs.getMetaData();

while (rs.next())
{
for (int i = 0; i < m.getColumnCount(); i++)
{
char caracter[]=m.getColumnName(i+1).toCharArray();
if (caracter[0]==97+indice)
{
modelo.add(i,m.getColumnName(i+1));
}
}
}

JList milista=new JList(modelo);
milista.setModel(modelo);
listas.add(milista);
JScrollPane scroll=new JScrollPane(listas);
fr.getContentPane().add(centro, BorderLayout.CENTER);
centro.add(scroll,new XYConstraints(100,100,350,350));
}
catch (SQLException r)
{
r.printStackTrace();
}
catch(Exception e){e.printStackTrace();}

}
}

public class Listados
{
public static void main(String []args)
{
Listas a=new Listas();
a.fr.show();
}
}
class BotonTablas_ActionListener implements ActionListener
{
Listas t1;

public BotonTablas_ActionListener(Listas t2)
{
t1=t2;
}
public void actionPerformed(ActionEvent evento)
{
Object opcion=evento.getSource();
if(opcion.equals(t1.combo))
{
t1.indice=t1.combo.getSelectedIndex();

try{

t1.ejecutar();

}
catch(SQLException e){e.printStackTrace();}
}
}
}