我有 2 个组合框,我需要将其设置为当从下拉列表中选择某些选项时,输出某些结果。如何将某些字符串变量或对象与多个组合框选择相关联。我不是要你帮我做作业。只需要指向正确的方向即可。
public class gui extends JFrame implements ActionListener{
String[] colour1 = {"red", "blue", "green", "orange", "brown","white", "black", "yellow", "purple", "pink"};
String[] colour2 = {"red", "blue", "green", "orange", "brown","white", "black", "yellow", "purple", "pink"};
JComboBox combo1 = new JComboBox(colour1);
JComboBox combo2 = new JComboBox(colour2);
JLabel message = new JLabel();
JFrame frame = new JFrame();
JPanel panel = new JPanel(new GridLayout(0, 1));
public gui() {
panel.add(combo1);
panel.add(combo2);
panel.add(message);
frame.add(panel);
}
我使用actionPerformed 来捕获用户输入,然后输出特定结果。目前它只需要一个组合框的值并输出一个字符串。我怎样才能使它需要2.
public void actionPerformed(ActionEvent e){
if(e.getSource() == combo1){
JCombobox cb = (JComboBox)e.getSource();
String colours = (String) cb.getSelectedItem();
switch(colours){
case "red": message.setText("");
break;
case "blue": message.setText("");
break;
case "green": message.setText("");
break;
case "pink": message.setText("");
break;
case "purple":message.setText("");
break;
case "white": message.setText("");
break;
case "black": message.setText("");
break;
case "brown": message.setText("");
break;
case "orange": message.setText("");
break;
case "yellow": message.setText("");
break;
default: message.setText("");
}
}
}
最佳答案
正如评论中指出的那样,您可能不需要这两个数组。当两个组合框应包含相同的值时,您可以将相同的数组传递给两个组合框。
实际问题似乎是针对如何根据两个组合框的选择的组合来执行特定操作。
我认为有两种选择:您可以将组合框存储为实例变量,也可以将组合框的选择存储为实例变量。由于您已经将组合框存储为实例变量,因此这里应该更容易。所以你可以这样做:
@Override
public void actionPerformed(ActionEvent e)
{
String color1 = (String)combo1.getSelectedItem();
String color2 = (String)combo2.getSelectedItem();
// Possibly check if either color is 'null' here
if (color1.equals("blue") && color2.equals("yellow"))
{
message.setText("green");
}
...
}
(注意:如果您现在打算编写一个嵌套 switch 语句,例如
switch(colour1)
{
case "red":
switch(colour2)
{
// 10 cases...
}
break;
// 10 x 10 cases...
}
您应该考虑不同的方法,具体取决于您想用这些颜色做什么...)
关于java - 使用 jcombobox 返回对象或变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23348721/