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();
}
});
}
}
我是如何做到这一点的?我是如何做到这一点的?你需要更多地解释一下你想要实现的目标。是否希望每次从第一个组合框中选择不同的值时,第二个组合框都会更改?如果是这样,您需要在第一个组合框上使用一个侦听器来确定它何时更改。您需要更多地解释您试图实现的目标。是否希望每次从第一个组合框中选择不同的值时,第二个组合框都会更改?如果是这样,你将