2015-08-30 3 views
0

Я использую два компонента JComboBox. Первое поле со списком получает данные из таблицы базы данных. Второй комбинированный блок также получает свои данные из таблицы базы данных и на основе данных, выбранных в первом поле со списком. i.eДва компонента JComboBox, управляемые данными

  1. combo box 1 - получает все курсы из базы данных.
  2. combo box 2 - получает все слоты, доступные для выбранного курса, из первого поля со списком.

Как это сделать?

course = new JComboBox(); 
    // get all the courses from database 
    DefaultComboBoxModel model = new DefaultComboBoxModel(); 
    ArrayList <String>c = ConnectDB.getAllCourse(); 
    for(String co: c) 
     { 
     model.addElement(co); 
     } 
    course.setModel(model); 
    course.setBounds(135, 136, 86, 20); 
    jf.getContentPane().add(course); 

Тогда:

course.addItemListener(new ItemListener() 
    { 
     @Override 
     public void itemStateChanged(ItemEvent e) { 
      String course = (String) e.getItem(); 
      System.out.println(course); 
      try { 
       ArrayList<String> AvailableSlots = ConnectDB.getAvailableSlots(course); 
       System.out.println(ConnectDB.getAvailableSlots(course)); 
       System.out.println(AvailableSlots); 
      } catch (SQLException e1) { 
       e1.printStackTrace(); 
      } 
     } 
    }); 
    slot = new JComboBox(); 
    slot.setModel(availableSlots); 
    slot.setBounds(135, 164, 86, 20); 
+1

1) Для лучшего помогите раньше, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 2) Java GUI должны работать с различными ОС, размером экрана, разрешением экрана и т. Д., Используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). –

ответ

0

Вы можете зарегистрировать слушателя ComboBox1, посмотрите here

Затем, на основе выбранного элемента вы можете заселить ComboBox2