Java 无法从保存在对象中的ArrayList和保存在HashMap中的对象中获取值
我正在处理Swing,无法从保存在对象中的Java 无法从保存在对象中的ArrayList和保存在HashMap中的对象中获取值,java,swing,Java,Swing,我正在处理Swing,无法从保存在对象中的arrayList中获取值,然后将其保存在hashMap中 system.out.println不打印任何值 我的代码包含一个过程列表和一个参数列表。 单击添加参数按钮后,参数将添加到paramList 单击添加过程按钮时,从textfield获取的过程保存在procList中 paramList中的值保存在新对象中(对象包含带有getter和setter的arraylist) Hashmap将过程名称存储为key,将对象存储为value 然后,我有另一
arrayList
中获取值,然后将其保存在hashMap
中
system.out.println
不打印任何值
我的代码包含一个过程列表和一个参数列表。
单击添加参数按钮后,参数将添加到paramList
单击添加过程按钮时,从textfield
获取的过程保存在procList
中
paramList
中的值保存在新对象中(对象包含带有getter和setter的arraylist)
Hashmap
将过程名称存储为key
,将对象存储为value
然后,我有另一个事件,我们单击GUI上的过程列表,然后获取所选的过程名称
所选过程名可用作从HashMap获取值的键。
我们使用键从hashmap获得参数数组列表
但是当我尝试在GUI中显示时,它是空白的,然后我尝试使用System.out.println查看值是否存在,而printed中没有值:-(
问题在于private void getParameterList
这是代码
//variable declaration
String procedureName;
String parameterName;
ArrayList<String> procList = new ArrayList<>();
ArrayList<String> paramList = new ArrayList<>();
HashMap<String,ParamListPojo> procMapper = new HashMap<>();
private void Button_addParameterActionPerformed(java.awt.event.ActionEvent evt) {
parameterName = paramField.getText();
paramList.add(parameterName);
//System.out.println(paramList);
DefaultListModel paramListModel = new DefaultListModel();
//populating DefaultListModel for parameters
Iterator<String> it2 = paramList.iterator();
while(it2.hasNext()){
paramListModel.addElement(it2.next());
}
//populating parameterList
parameterList.setModel(paramListModel);
paramField.setText("");
}
private void button_addProcedureActionPerformed(java.awt.event.ActionEvent evt) {
//procedureName = level_funcPrefix.getText() +procedureField.getText();
ParamListPojo paramListPojo = new ParamListPojo();
procList.add(procedureName);
//Storing procedures and parameters in MAP
paramListPojo.setParamList(paramList);
procMapper.put(procedureName,paramListPojo);
System.out.println(procList);
System.out.println(paramList);
System.out.println(procMapper);
procedureField.setText("");
DefaultListModel procListModel = new DefaultListModel();
DefaultListModel paramListModel = new DefaultListModel();
// populating DefaultListModel for procedureList
Iterator<String> it1 = procList.iterator();
while(it1.hasNext()){
procListModel.addElement(it1.next());
}
//populating DefaultListModel for parameters
Iterator<String> it2 = paramList.iterator();
while(it2.hasNext()){
paramListModel.addElement(it2.next());
}
// populating procedureList
procedureList.setModel(procListModel);
procedureList.setSelectedIndex(procList.size()-1);
//populating parameterList
parameterList.setModel(paramListModel);
paramList.clear();
}
// populate Parameter List on GUI when procedure is selected
private void getParameterList(java.awt.event.MouseEvent evt) {
String procedure = procedureList.getSelectedValue();
System.out.println("MouseClickEvent , procedure is "+procedure);
//ParamListPojo prjL = new ParamListPojo();
ParamListPojo prjL = procMapper.get(procedure);
paramList = prjL.getParamList();
System.out.println(paramList);
//Declaring DefaultListModel for parameters
DefaultListModel paramListModel = new DefaultListModel();
Iterator<String> it = paramList.iterator();
while(it.hasNext()){
String parameter = it.next();
paramListModel.addElement(parameter);
System.out.println(parameter);
}
因此,我们可以看到,在添加过程时,两个值都在列表中,ans也在HashMAP中
但是,当在GUI中通过鼠标点击列表获取时,输出是空白的
GUI的示例图像如下所示
请帮我解决这个问题:-(问题解决了。
问题在于ParamListPojo
类中arrayList的setter方法
public void setParamList(ArrayList<String> procList) {
//this.prmList = procList;
prmList.addAll(procList);
}
public void setParamList(ArrayList procList){
//this.prmList=procList;
prmList.addAll(procList);
}
以前我使用的是this.prmList=procList
现在我使用的是prmList.addAll(procList);
public void setParamList(ArrayList<String> procList) {
//this.prmList = procList;
prmList.addAll(procList);
}