在下面的代码中,如果jcbValue计算为Find,我将其设置为打印hashmap的内容。它返回NULL。我假设这意味着到那时,hashmap的内容已被清空。
我的问题如下; 1)我做错了什么? 2)我该如何解决?
谢谢, CJ
public class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
HashMap<String, ArrayList> map = new HashMap<String, ArrayList>();
String jcbValue = (String) jcbIDF.getSelectedItem();
if (jcbValue == "Insert") {
String Id = jtfId.getText();
ArrayList<String> ValueList = new ArrayList<String>();
String Name = jtfName.getText();
String GPA = jtfGPA.getText();
ValueList.add(Name);
ValueList.add(GPA);
map.put(Id, ValueList);
System.out.println(map);
JOptionPane.showMessageDialog(null, "Record Inserted",
"Result", JOptionPane.INFORMATION_MESSAGE);
// jtfId.setText("");
// jtfName.setText("");
// jtfGPA.setText("");
} else if (jcbValue == "Delete") {
System.out.println(map);
JOptionPane.showMessageDialog(null,
"Delete Selected; But Not Implemented", "Result",
JOptionPane.INFORMATION_MESSAGE);
} else if (jcbValue == "Find") {
System.out.println(map);
JOptionPane.showMessageDialog(null,
"Find Selected; But not Implemented", "Result",
JOptionPane.INFORMATION_MESSAGE);
}
}// Terminates actionPerformed Class
}// Terminates ButtonListenerClass
答案 0 :(得分:4)
每次点击actionPerformed都会创建一个新地图,因此在调用它时不会有任何内容。
地图需要作为动作处理程序中的局部变量以外的其他内容存在。
(正如AVD所说,你的比较是不正确的。)
答案 1 :(得分:1)
使用equals()
方法。
if(jcbValue.equals("Insert"))
{
//
}