我有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("");
}
}
}
答案 0 :(得分:1)
正如评论中指出的那样,您可能不需要两个数组。当两个组合框都包含相同的值时,您可以将同一个数组传递给两个组合框。
实际问题似乎是针对如何根据两个组合框的选择组合执行特定操作。
我认为有两种选择:您可以将组合框存储为实例变量,也可以将组合框的选择存储为实例变量。由于您已经将组合框存储为实例变量,因此这应该更容易。所以你可以这样做:
@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(colour1)
{
case "red":
switch(colour2)
{
// 10 cases...
}
break;
// 10 x 10 cases...
}
你应该考虑一种不同的方法,取决于你想用这些颜色做什么 ...)
答案 1 :(得分:0)
您想要的是显示一个值,具体取决于两个组合框的选定值。 make combo1和combo2私有字段。编写一个私有方法来响应两个组合的动作事件。打开组合值。请注意,您可以直接访问这两个组合,因为它们是类字段