Cómo pasar valor de una clase a jcombobox en otra clase

Public void getItem (){
try {
         dBconnection...
              while(rs.next){
                  String customers = rs.getString (1);
this.jcombobox1.addItem (customers);
}

}

}

De este método a jcombobox en otra clase. ¿El error está en jcombobox?

-2
Meli 29 ene. 2016 a las 17:37

2 respuestas

La mejor respuesta

Como ya tiene el objeto de clase de B en A, digamos ex Bclassobj.

Public void getItem (){
try {
       while(rs.next){
         this.jcombobox1.addItem (rs.getString (1));
         Bclassobj.Bclassjcombobox.addItem (rs.getString (1));
     }

    }
   }
0
SatyaTNV 29 ene. 2016 a las 15:43

Generalmente, esta es una mala forma de codificar, sin ofender.

No debe mezclar el código para:

  1. Conseguir la conexión a la base de datos

  2. Ejecutando algún comando SQL y obteniendo datos de ResultSet

  3. Creando gráficos

Simplemente cambie su método Public void getItem () a Public List<String> getCustomers(). El negocio de este método debería ser simplemente obtener los datos de la base de datos y devolver la lista de nombres de clientes como List<String>.

Luego, en tu otra clase, simplemente llama a este método y configura el List<String> completo como modelo de tu JComboBox.

Vea el siguiente ejemplo:

public class AnotherClass extends JFrame{

    private JComboBox<String> jComboBox;

    public AnotherClass() {
        init();
    }

    private void init(){
        //... other components
        DBClass db = new DBClass();
        List<String> customers = db.getCustomers();
        jComboBox = new JComboBox<>(customers.toArray(new String[]{}));
        this.add(jComboBox);
        //... other components
    }
}

class DBClass{

    public List<String> getCustomers (){
        List<String> customers = new ArrayList<>();
        try{
             //dBconnection...
            ResultSet rs = null;// your code for getting ResultSet
            while(rs.next()){
                 String customer = rs.getString (1);
                 customers.add(customer);
            }
        }catch(SQLException e){
            e.printStackTrace();
        }
        return customers;
    }
}

Buena suerte.

0
STaefi 29 ene. 2016 a las 16:13