Java - listas

 
Vista:

listas

Publicado por eduardo (144 intervenciones) el 17/05/2005 12:18:26
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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:listas

Publicado por Yamil Bracho (2315 intervenciones) el 17/05/2005 15:59:24
Puedes mostrar el codigo que estas usando para llenar la lista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:listas

Publicado por eduardo (144 intervenciones) el 17/05/2005 16:06:11
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();}
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:listas

Publicado por Yamil Bracho (2315 intervenciones) el 17/05/2005 17:14:55
Si el combo va a tener los datos de la seleccion en una tabla y dicha seleccion no cambia, pues cargalo en el constructor de la clase.
public void ejecutar()throws SQLException {

try {

sql="select * from presto";
stmr = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY );
rs = stmr.executeQuery();
if ( rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
int columnas = rsmd.getColumnCount();
rs.first();
while (rs.next()) {
for (int i = 0; i < columnas; i++) {
char caracter[] = rsmd.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);

fr.getContentPane().add(centro, BorderLayout.CENTER);
} catch (SQLException r) {
r.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}

Segundo, para que le agregas un scrollpane a un combo box ? El mismo ComboBox tiene su manejo del espacio...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:listas

Publicado por eduardo (144 intervenciones) el 17/05/2005 17:35:41
hola y gracias por la respuesta, el combo va a contener una serie de opciones, que dependiendo de lo que se pulse cargara unos datos u otros, en este caso el nombre de los campos de una tabla perteneciente a una base de datos, la segunda cosa es que el combo no tiene un scrollpane, es el panel donde meto las listas, porque voy a tener varias y para que se muevan a la vez.
He estado probando con el codigo y el problema que tengo es que al ejecutar la aplicacion carga la lista, pero cuando escojo otra opcion me lo pone debajo de lo que habia primero. Entonces he probado a poner el metodo removeall o el metodo clear comprobando primero si esta llena o no para que cuando vuelva a pulsar otra opcion del combo no aparezca debajo, pero me da salta una excepcion de ArrayIndexOutOfBoundsException.
Me podrias decir si hay alguna otra forma de hacerlo, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:listas

Publicado por Yamil Bracho (2315 intervenciones) el 17/05/2005 17:41:37
Simplemente creando un nuevo modelo con los datos ya asignandole este modelo al Combo deberia funcionar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:listas

Publicado por eduardo (144 intervenciones) el 17/05/2005 18:32:54
gracias por las respuestas, ya lo consegui hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:listas

Publicado por eduardo (144 intervenciones) el 17/05/2005 18:37:27
hola de nuevo y siento ser tan pesado, queria saber si se pueden modificar las listas, porque he estado mirando en la api y no encuentro nada relacionado con ello.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:listas

Publicado por Yamil Bracho (2315 intervenciones) el 17/05/2005 21:28:42
Al igual que el combo, un JLIst tiene un modelo asociado, en este caso ListModel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar