我创建了一个JFrame
窗口,其中包含JComboBox
。我可以选择但他们什么都不做。我认为event
是String
,但事实并非如此。解决方案是什么?
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Gui extends JFrame {
private JComboBox box;
private JLabel picture;
private static String[] filename = {"", "b.png", "x.png"};
public Gui() {
super("the title");
setLayout(new FlowLayout());
box = new JComboBox(filename);
box.addItemListener(
new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if(event.getStateChange()==ItemEvent.SELECTED){
System.out.println("test");
if(event=="b.png") {
System.out.println("test2");
}
}
}
});
add(box);
}
}
答案 0 :(得分:2)
您需要获取所选项目(在您的案例中为String
)并将其与equals
的字符串进行比较:
if ("b.png".equals(event.getItem()))
请注意,这比
更可取event.getItem().equals("b.png")
因为理论上这可以抛出NPE。
另外,使用泛型类型:JComboBox<String>
,而不是原始类型。