Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据不同组合框的选定项更改组合框选项_Java_Swing_Jcombobox - Fatal编程技术网

Java 如何根据不同组合框的选定项更改组合框选项

Java 如何根据不同组合框的选定项更改组合框选项,java,swing,jcombobox,Java,Swing,Jcombobox,如何根据不同组合框的选定项更改组合框的选项 public class Test extends JFrame{ String[] test = {"blank", "blank_1"}; if (comboBox.getSelectedItem() == "blank"){ String[] test_1 = {"test"}; } else { String[] test_1 = {"test_1"}; } JComboB

如何根据不同组合框的选定项更改组合框的选项

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);
}

在第一个中添加一个
ActionListener
,当触发时从中获取
selectedItem
,用所需值替换第二个的
ComboxModel

您可以使用某种类型的
Map
在第一个组合框中的值与第二个组合框中的数据之间进行映射,以简化操作

首先看一下:


向第一个添加一个
ActionListener
,触发后从中获取
selectedItem
,用所需值替换第二个的
ComboBoxModel

您可以使用某种类型的
Map
在第一个组合框中的值与第二个组合框中的数据之间进行映射,以简化操作

首先看一下:


    • 您必须创建一个操作

       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);
           }
      }   
      

      你必须创建一个动作

       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);
           }
      }   
      

      下面是一个简单的示例,让您开始学习:

      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();
                  }
              });
          }
      }
      
      import java.awt.*;
      导入java.awt.event.*;
      导入java.util.*;
      导入javax.swing.*;
      公共类ComboBoxTwo扩展JPanel实现ActionListener
      {
      专用JComboBox主组合框;
      专用JComboBox子omboBox;
      私有哈希表子项=新哈希表();
      公营机构
      {
      字符串[]项={“选择项”、“颜色”、“形状”、“水果”};
      mainComboBox=新的JComboBox(项目);
      mainComboBox.addActionListener(这个);
      //使用向上/向下箭头键时防止触发操作事件
      mainComboBox.putClientProperty(“JComboBox.isTableCellEditor”,Boolean.TRUE);
      添加(主组合框);
      //创建具有多个模型的子组合框
      subComboBox=新的JComboBox();
      subComboBox.setPrototypeDisplayValue(“xxxxxxxxx”);//JDK1.4
      添加(子控制台);
      字符串[]子项1={“选择颜色”、“红色”、“蓝色”、“绿色”};
      子项目。投入(项目[1],子项目1);
      字符串[]子项2={“选择形状”、“圆”、“正方形”、“三角形”};
      子项目。投入(项目[2],子项目2);
      String[]subItems3={“选择水果”、“苹果”、“橘子”、“香蕉”};
      子项目。投入(项目[3],子项目3);
      }
      已执行的公共无效操作(操作事件e)
      {
      String item=(String)mainComboBox.getSelectedItem();
      对象o=子项。获取(项);
      如果(o==null)
      {
      setModel(新的DefaultComboxModel());
      }
      其他的
      {
      setModel(新的DefaultComboxModel((字符串[])o));
      }
      }
      私有静态void createAndShowUI()
      {
      JFrame=新JFrame(“SSCCE”);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(新的ComboBoxTwo());
      frame.setLocationByPlatform(真);
      frame.pack();
      frame.setVisible(true);
      }
      公共静态void main(字符串[]args)
      {
      invokeLater(新的Runnable()
      {
      公开募捐
      {
      createAndShowUI();
      }
      });
      }
      }
      
      以下是一个简单的示例,让您开始学习:

      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();
                  }
              });
          }
      }
      
      import java.awt.*;
      导入java.awt.event.*;
      导入java.util.*;
      导入javax.swing.*;
      公共类ComboBoxTwo扩展JPanel实现ActionListener
      {
      专用JComboBox主组合框;
      专用JComboBox子omboBox;
      私有哈希表子项=新哈希表();
      公营机构
      {
      字符串[]项={“选择项”、“颜色”、“形状”、“水果”};
      mainComboBox=新的JComboBox(项目);
      mainComboBox.addActionListener(这个);
      //使用向上/向下箭头键时防止触发操作事件
      mainComboBox.putClientProperty(“JComboBox.isTableCellEditor”,Boolean.TRUE);
      添加(主组合框);
      //创建具有多个模型的子组合框
      subComboBox=新的JComboBox();
      subComboBox.setPrototypeDisplayValue(“xxxxxxxxx”);//JDK1.4
      添加(子控制台);
      字符串[]子项1={“选择颜色”、“红色”、“蓝色”、“绿色”};
      子项目。投入(项目[1],子项目1);
      字符串[]子项2={“选择形状”、“圆”、“正方形”、“三角形”};
      子项目。投入(项目[2],子项目2);
      String[]subItems3={“选择水果”、“苹果”、“橘子”、“香蕉”};
      子项目。投入(项目[3],子项目3);
      }
      已执行的公共无效操作(操作事件e)
      {
      String item=(String)mainComboBox.getSelectedItem();
      对象o=子项。获取(项);
      如果(o==null)
      {
      setModel(新的DefaultComboxModel());
      }
      其他的
      {
      setModel(新的DefaultComboxModel((字符串[])o));
      }
      }
      私有静态void createAndShowUI()
      {
      JFrame=新JFrame(“SSCCE”);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(新的ComboBoxTwo());
      frame.setLocationByPlatform(真);
      frame.pack();
      frame.setVisible(true);
      }
      公共静态void main(字符串[]args)
      {
      invokeLater(新的Runnable()
      {
      公开募捐
      {
      createAndShowUI();
      }
      });
      }
      }
      
      我是如何做到这一点的?我是如何做到这一点的?你需要更多地解释一下你想要实现的目标。是否希望每次从第一个组合框中选择不同的值时,第二个组合框都会更改?如果是这样,您需要在第一个组合框上使用一个侦听器来确定它何时更改。您需要更多地解释您试图实现的目标。是否希望每次从第一个组合框中选择不同的值时,第二个组合框都会更改?如果是这样,你将