Включать combobox в зависимости от результата другого combobox

Я хочу загрузить в combobox стоимость этого завися выбор, реализованный в другом combobox.

Я объясняюсь, у меня есть приложение, которое позволяет добавлять машину, и я хотел бы выбрать стоимость посредством консультаций завися стоимость, взятая в предварительном combobox. А именно, я реализую консультацию SQL, чтобы добавлять в статьях этого первого cmbobox (отметке), и автоматически загружать секунду combobox стоимостью стоимости первого combobox ** (модель). **

CONEXIONES.JAVA

    /**
     * Realizamos una consulta para cargar todas las marcas en el combobox_marcas de Alta_vehiculo.java.
     */
    public static ArrayList cargar_marcas() {
        ArrayList<String> marcas = new ArrayList<String>();
        String bd = Conexiones.bbdd;
        Connection c = (Connection) Conexiones.conexion_a_BBDD(bd);
        Statement stm;
        ResultSet rs;
        try {
            //Consulta para sacar todas las marcas.
            stm = c.createStatement();
            String consulta_marcas = "SELECT descripcion FROM marca;";
            rs = stm.executeQuery(consulta_marcas);
            System.out.println("CONSULTA TODAS LAS MARCAS: Mostramos todas las marcas de la tabla vehiculos.\n");
            int i = 0;
            while (rs.next()) {
                String marca = rs.getString("descripcion");
                marcas.add(marca);
                i++;           
            }
            c.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return marcas;
    }



    /**
     * Realizamos una consulta para cargar todos los modelos en el combobox_modelos de Alta_vehiculo.java.
     */
    public static ArrayList cargar_modelos() {
        ArrayList<String> modelos = new ArrayList<String>();
        String bd = Conexiones.bbdd;
        Connection c = (Connection) Conexiones.conexion_a_BBDD(bd);
        Statement stm;
        ResultSet rs;
        try {
            //Consulta para sacar todos los modelos
            stm = c.createStatement();
            String consulta_modelos = "SELECT modelo FROM vehiculos;";
            rs = stm.executeQuery(consulta_modelos);
            System.out.println("CONSULTA TODOS LOS MODELOS: Mostramos todoso los modelos de la tabla vehiculos.\n");
            int i = 0;
            while (rs.next()) {
                String modelo = rs.getString("modelo");
                modelos.add(modelo);
                System.out.println(modelo);
                i++;           
            }
            c.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return modelos;
    }

ALTA_VEHICULO.JAVA

public class Alta_vehiculo extends javax.swing.JDialog {
    public Alta_vehiculo(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        setLocationRelativeTo(null);

        //Declaramos un arrayList de Strings llamado "marcas".
        ArrayList<String> marcas = new ArrayList<String>();
        //Cargamos los valores de la función "cargar_marcas()" de Conexiones.java en el arrayList "marcas".
        marcas = Conexiones.cargar_marcas();
        //Creamos un iterator para recorrer el ArrayList.
        Iterator<String> i = marcas.iterator();
        //Recorremos el iterator "i".
        while(i.hasNext()){
            //Añadimos a los items cada marca.
            combobox_marca.addItem(i.next());
        }
    }
}

Хорошо, мой вопрос: как я загружаю статьи combobox_modelos для того, чтобы каждая модель пошла с Вашей отметкой?

0
задан 23.12.2016, 12:48
1 ответ

Если, но ты видишь осторожно, из-за которого он работает, выбрав, и в "deseleccionar"

В travГ©s события метода ItemStateChanged ты можешь брать момент ее selecciГіn, я помещаю тебе простой пример с двумя comboBox String.

private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {                                            

    if (evt.getStateChange() == ItemEvent.SELECTED) 
    {
         //Aqui deberias coger el item seleccionado
         String a=(String)jComboBox1.getSelectedItem();
         //Y aquí a tu función para dar valores al comboBox2 a partir del seleccionado
         if(a.equals("SEAT"))
            jComboBox2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "LEON","IBIZA"}));
          if(a.equals("VW"))  
            jComboBox2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "GOLF","POLO"}));
          if(a.equals("Mercedes"))  
            jComboBox2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Serie 1","Serie 5"}));

    }
}    

типов Привета

EDICIГ “N, в ней funciГіn ItemStateChanged:

  if (evt.getStateChange() == ItemEvent.SELECTED) 
    {
         String marcaSeleccionada=(String)combobox_marcas.getSelectedItem();
          //Creamos un Array de String para los modelos
          ArrayList<String> modelos=new ArrayList<String>();
          //la función obtenerModelos nos devuelva una lista de Strings con los modelos de la BBDD dada una marca
          modelos.obtenerModelos(marcaSeleccionada);   

             Iterator<String> i = modelos.iterator();
            //Borramos los datos anteriores del comboBox
            jComboBox2.removeAllItems();
            while(i.hasNext()){
                //Añadimos a los items con cada modelo.
                jComboBox2.addItem(i.next());
            }
         }
2
ответ дан 24.11.2019, 11:54
  • 1
    Большое спасибо из-за ответа, я оставляю тебе мой có я говорю. Мое сомнение продолжает быть тем же самым: загружать статьи второго combobox в зависимости от стоимости первого combobox. – omaza1990 23.12.2016, 12:51
  • 2
    Sabrí схвати делать funció n, что, который консультировала BBDD segú n отметка и возвратите тебе Ваши модели? в этом случае в ItemStateChange: – ReyJuanjo 23.12.2016, 13:01
  • 3
    Я оставил тебе actualizació n в моем ответе, также, если в BBDD у тебя есть идентификация и DESCRIPCIÓ N он был бы хорошим, что ты определяешь класс с идентификацией и descripció n и ты создавал combobox añ adié ndole статьи этого класса вместо статей типа String, но это уже другая тема. – ReyJuanjo 23.12.2016, 13:23
  • 4
    select модель from транспортные средства схвати v, помечает эксперт м where v.marca = m.id and m.descripcion = " SEAT"; где SEAT será стоимость, взятая из отметки в cargar_marcas (); – omaza1990 23.12.2016, 13:27
  • 5
    Так как у тебя сейчас только есть, что funció n как ты cargar_modelos () перемещая его String с отметкой и añ adiendole where в твою консультацию. Iguamente, поскольку ты имеешь, пойдите и descripció n в подмостках, тебе irí в лучше, если списки были типа, похожего на следующего: public class ComboItem { лиши тебя String text; лиши тебя int пойдите; public void setText (String text) { this.text = text; } public void setId (int пойдите) { this.id = пойдите; } public String toString () { return text; } public int getId () { return пойдите; } – ReyJuanjo 23.12.2016, 13:39