2015-07-11 4 views
0

Как изменить параметры для комбинированного поля в зависимости от выбранного элемента в другом поле со списком?Как изменить параметры comboBox в зависимости от выбранного элемента другого comboBox

public class Test extends JFrame{ 
    String[] test = {"blank", "blank_1"}; 
    if (comboBox.getSelectedItem() == "blank"){ 
     String[] test_1 = {"test"}; 
    } 
    else { 
    String[] test_1 = {"test_1"}; 
    } 
    JComboBox comboBox = new JComboBox(test); 
    JComboBox comboBox_1 = new JComboBox(test_1); 
} 
+0

Вы должны объяснить немного больше о том, чего вы пытаетесь достичь. Вы хотите, чтобы второй comboBox менялся каждый раз, когда вы выбираете другое значение из первого conboBox? Если это так, вам нужно будет использовать прослушиватель в первом comboBox, чтобы определить, когда он изменится. – DuncanKinnear

ответ

3

Вот простой пример, чтобы вы начали:

import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.*; 

public class ComboBoxTwo extends JPanel implements ActionListener 
{ 
    private JComboBox<String> mainComboBox; 
    private JComboBox<String> subComboBox; 
    private Hashtable<String, String[]> subItems = new Hashtable<String, String[]>(); 

    public ComboBoxTwo() 
    { 
     String[] items = { "Select Item", "Color", "Shape", "Fruit" }; 
     mainComboBox = new JComboBox<String>(items); 
     mainComboBox.addActionListener(this); 

     // prevent action events from being fired when the up/down arrow keys are used 
     mainComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); 
     add(mainComboBox); 

     // Create sub combo box with multiple models 

     subComboBox = new JComboBox<String>(); 
     subComboBox.setPrototypeDisplayValue("XXXXXXXXXX"); // JDK1.4 
     add(subComboBox); 

     String[] subItems1 = { "Select Color", "Red", "Blue", "Green" }; 
     subItems.put(items[1], subItems1); 

     String[] subItems2 = { "Select Shape", "Circle", "Square", "Triangle" }; 
     subItems.put(items[2], subItems2); 

     String[] subItems3 = { "Select Fruit", "Apple", "Orange", "Banana" }; 
     subItems.put(items[3], subItems3); 
    } 

    public void actionPerformed(ActionEvent e) 
    { 
     String item = (String)mainComboBox.getSelectedItem(); 
     Object o = subItems.get(item); 

     if (o == null) 
     { 
      subComboBox.setModel(new DefaultComboBoxModel()); 
     } 
     else 
     { 
      subComboBox.setModel(new DefaultComboBoxModel((String[])o)); 
     } 
    } 

    private static void createAndShowUI() 
    { 
     JFrame frame = new JFrame("SSCCE"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new ComboBoxTwo()); 
     frame.setLocationByPlatform(true); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowUI(); 
      } 
     }); 
    } 
} 
1

Добавить ActionListener к первому, при запуске получить selectedItem от него, заменить ComboBoxModel из второй с требуемыми значениями

Вы можете использовать Map какой-то сопоставить между значениями в первый выпадающий с данными для второго, чтобы сделать жизнь проще

Start, взглянув на:

+0

Как мне это сделать? – tropic

+0

путем написания кода –

0

Вы должны создать действие

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {           

    if (jComboBox1.getSelectedItem().toString().equals("blank")) { 
     String[] test_1 = {"test1"}; 
     DefaultComboBoxModel defaultComboBoxModel = new DefaultComboBoxModel(test_1); 
     jComboBox2.setModel(defaultComboBoxModel); 
    } else { 
     String[] test_1 = {"test_1"}; 
     DefaultComboBoxModel defaultComboBoxModel = new DefaultComboBoxModel(test_1); 
     jComboBox2.setModel(defaultComboBoxModel); 
    } 
} 
Смежные вопросы