Autor Tema: jtable alimentado de jcombobox  (Leído 13670 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
jtable alimentado de jcombobox
« : agosto 11, 2008, 10:19:49 am »
buenas buenas amigos, les vengo con esta duda, hace tiempo que no programaba en java y menos en swing, ahorita le voy agarrando el sabor otra vez

mi problema esque tengo una jtabla alimentada de una base de datos y la verdad que lo quiero separar por un campo, asi mi tabla tiene:
id_proveedor, y varias cosas mas unidas por joins

lo que quiero esque en un jcombobox me lo llene con los nombre de los proveedores y luego al cambiarlo que en la jtable se actualice, asi en el combobox selecciono proveedor: svcommunity, en la jtable me salgan todos los registros con ese proveedor

el codigo de llenado de la jtable esta asi:
Citar
DBConnect db = new DBConnect();
Connection conn = db.dbConnect(CPA.login.aDataBases[CPA.login.iDB][1], CPA.login.aDataBases[CPA.login.iDB][3],
         CPA.login.aDataBases[CPA.login.iDB][2], CPA.login.dbUsername, CPA.login.dbPassword);

Vector columnNames = new Vector();
Vector datos = new Vector();

try{
         //Read data from service provider table
         String sql = "SELECT * FROM service_provider order by 1";
         Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery( sql );
         ResultSetMetaData md = rs.getMetaData();
         int columns = md.getColumnCount();
         
         //Get column names
         for (int i = 1; i <= columns; i++)
            {
                columnNames.addElement( md.getColumnName(i) );
            }
         //Get row data
         while (rs.next())
            {
                Vector row = new Vector(columns);
 
                for (int i = 1; i <= columns; i++)
                {
                    row.addElement( rs.getObject(i) );
                }
 
                datos.addElement( row );
            }
 
            rs.close();
            stmt.close();
         
      }
      catch(Exception e)
        {
            System.out.println( e );
        }

model = new DefaultTableModel(datos,columnNames);
tableProvService = new JTable(model) {......
con esto en la jtable me llena todos los datos

ahora para el jcombobox lo tengo asi:
Citar
Vector datos = new Vector();

      try{
         //Read data from service provider table
         String sql = "SELECT sp_name FROM service_provider order by 1";
         Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery( sql );
         ResultSetMetaData md = rs.getMetaData();
         int columns = md.getColumnCount();
         
         //Get row data
         while (rs.next())
            {
                Vector row = new Vector(columns);
 
                for (int i = 1; i <= columns; i++)
                {
                    row.addElement( rs.getObject(i) );
                    cbProvider.addItem(rs.getObject(i));
                }
 
                datos.addElement( row );
            }
 
            rs.close();
            stmt.close();
           
      }
catch(Exception e)
        {
            System.out.println( e );
        }

con eso en el jcombobox se llena con los nombres de los proveedores

quiero que al seleccionar el nombre del combobox, la jtable se me actualice con el proveedor del combobox

lo que pense esque en un actionevent del combobox me llame una funcion que le paso el selecteditem y dentro de esa funcion con ese parametro ya me contruye el select sql para el llenado de la tabla, pero es en esa parte que no me sale con lo del actionevent, alguien tiene otra sugerencia, gracias a todos

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re: jtable alimentado de jcombobox
« Respuesta #1 : septiembre 04, 2008, 03:54:58 pm »
bueno, le halle, por si alguien quiere saber es algo asi:

declaracion
Código: [Seleccionar]
private JTable tableProvService;
public String parametro;

el itemListener del combobox
Código: [Seleccionar]
ItemListener itemListener = new ItemListener() {
     public void itemStateChanged(ItemEvent e) {
          if (e.getStateChange() == ItemEvent.SELECTED) {
          comboBox1.removeItem("Seleccione un Dato");
          parametro = (String) comboBox1.getSelectedItem();
          reloadTableProvParamGe();
          }
     }
};

Esto es para cargar la tabla con los datos
Código: [Seleccionar]
private void reloadTableProvService(){
     Vector columnNames = new Vector();
     Vector datos = new Vector();

     try {
     // Read data from table
     String sql = "SELECT  * FROM tablita1 WHERE campo = parametro";
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery(sql);
     ResultSetMetaData md = rs.getMetaData();
     int columns = md.getColumnCount();
     // Get column names
     for (int i = 1; i <= columns; i++) {
          columnNames.addElement(md.getColumnName(i));
     }
     // Get row data
     while (rs.next()) {
          Vector row = new Vector(columns);
          for (int i = 1; i <= columns; i++) {
          row.addElement(rs.getObject(i));
     }

     datos.addElement(row);
     }

     rs.close();
     stmt.close();

     } catch (Exception e) {
          System.out.println(e);
     }


     DefaultTableModel model;
     model = new DefaultTableModel(datosProveedores, columnNames);
     tableProvService.setModel(model);
}

me hace falta codigo, pero asi es, ojala le sea de utilidad a alguien, creo que me dare un K+ a mi mismo por hacerlo, jajajajaja pajas

Desconectado Jaru

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 782
  • -Receive: 1555
  • Mensajes: 13250
  • some text
Re: jtable alimentado de jcombobox
« Respuesta #2 : septiembre 04, 2008, 03:58:11 pm »
felicidades, creemelo que a mi me pasa a cada rato que solo me contesto mis preguntas...

como dobleposteaste?

ahora ya se a quien preguntarle de java (aunque espero nunca tener que hacerlo, no me gusta java)
N/A

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re: jtable alimentado de jcombobox
« Respuesta #3 : septiembre 04, 2008, 04:01:10 pm »
estamos a la orde para java y cualquier otro lenguaje, tambien medio manejo php y .net,

lo del doublepost es porque ya tenia mas de dos o tres semanas de haber posteado, despues de ese tiempo se puede doblepostear, no se si sera bug o sera melon o sera tu tia, pero se puede jejeje

Desconectado Maitro...

  • Trade Count: (8)
  • The Communiter-
  • *
  • Thank You
  • -Given: 100
  • -Receive: 134
  • Mensajes: 2995
  • Maitrosoft ©®™
Re: jtable alimentado de jcombobox
« Respuesta #4 : septiembre 04, 2008, 04:05:43 pm »
Ahi tu respuesta naruto ;)

Citar
Double Post Stopper - Por un tiempo de 7 días un usuario normal no puede escribir un mensaje inmediatamente después de uno suyo, esta limitante no aplica para los miembros Elite.


http://www.svcommunity.org/forum/index.php?topic=46142.0

estamos a la orde para java y cualquier otro lenguaje, tambien medio manejo php y .net,


Hoy ya se a quien preguntarle :thumbsup:

Desconectado Jaru

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 782
  • -Receive: 1555
  • Mensajes: 13250
  • some text
Re: jtable alimentado de jcombobox
« Respuesta #5 : septiembre 04, 2008, 04:08:12 pm »
aunque hay un truco si queres postear antes de los 7 dias y el ultimo post es el tuyo...
siempre se puede y el thread hace BUMP de todas maneras  :roll:
pero shhhhhh no les digan que yo se  :x
« Última Modificación: septiembre 04, 2008, 04:10:12 pm por naruto »
N/A

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re: jtable alimentado de jcombobox
« Respuesta #6 : septiembre 04, 2008, 04:15:49 pm »
oh asi que son 7 dias jejejejejeje

bueno otra duda con Java, a quien la encuentra primero

en cualquier JFrame, JPanel, JInternalFrame, JDialog, etc....
al adicionar los elementos, ocupo un GridLayout y asi los voy agregando, cuando los agrego y me posiciono sobre un elemento, y le apreto la tecla TAB, este cambia al siguiente objeto a su derecha sobre la misma linea en la que se encuentra, luego que no hayan mas elementos a su derecha se posiciona en el primer objeto a la izquierda de la fila de abajo, alguien sabe como cambiar ese orden? en .NET en las propiedades del objeto le podes especificar que orden queres que siga asignando un numero a la propiedad....este no me acuerdo jajajajaja, ahora hacerlo en java es la onda

Código: [Seleccionar]
final JDialog addProvService = new JDialog();
addProvService.setVisible(true);
addProvService.setLayout(new GridBagLayout());
final JTextField tProvId, tProvName;
final JButton bAdd, bCancel;
GridBagConstraints gb;
tProvId = new JTextField();
tProvName = new JTextField();
bAdd = new JButton();
bCancel = new JButton();

gb = new GridBagConstraints();
gb.gridy = 0;
gb.gridx = 0;
addProvService.getContentPane().add(tProvId, gb);

gb.gridy = 0;
gb.gridx = 1;
addProvService.getContentPane().add(bAdd, gb);

gb.gridy = 1;
gb.gridx = 0;
addProvService.getContentPane().add(tProvName, gb);

gb.gridy = 1;
gb.gridx = 1;
bCancel.setEnabled(true);

este codigo crea un dialog con 2 textfields y 2 botones, se dibujan asi en la pantalla:

textbox1    boton1
textbox2    boton2

si me coloco en textbox1 y le apreto TAB el foco pasa a boton1 luego a textbox2, luego a boton2 y luego a textbox1 otran vex

yo lo que quiero que haga es cambie textbox1 a textbox2 luego a boton1 y luego a boton2

ya probe cambiando el orden de como se agregan al jdialog pero es lo mismo, aunque agregue primero el boton2 siempre lo agarra de ultimo con el tab, por ser el elemento mas a la derecha de la ultima fila


EDIT: ya le encontre es asi:
Código: [Seleccionar]
tProvId.requestFocus();
tProvId.setNextFocusableComponent(tProvName);
bAdd.setNextFocusableComponent(bCancel);
tProvName.setNextFocusableComponent(bAdd);
bCancel.setNextFocusableComponent(tProvId);

no se si habra otra forma pero me funciona, ojala a uds tambien, otro +K para mi jajajajaa
« Última Modificación: septiembre 04, 2008, 04:51:44 pm por Camus de Acuario »