我正在使用Swing,我无法从对象中保存的arrayList
中获取值,然后将其保存在hashMap
中。
system.out.println
不打印任何值。
我的代码包含一个过程列表和一个参数列表。
单击添加参数按钮后,参数将添加到paramList
单击添加过程按钮后,从textfield
获取的过程将保存在procList
中。
来自paramList
的值保存在新对象中(对象包含带有getter和setter的arraylist)
Hashmap
将过程名称存储为key
,将对象存储为value
然后,我有另一个事件,我们点击GUI上的过程列表,然后我们获取所选的过程名称,
所选的过程名称可以用作从HashMap获取值的Key。 我们使用密钥从hashmap获取参数的数组列表。
但是当我试图在GUI中显示它然后它是空白的,然后我试图看看是否有使用System.out.println的值并且没有打印的值:-(
问题在于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);
}
控制台输出
[p_csacas]
[scasca, ascacasc, ascacs]
{p_csacas=wrapperbuilder.ParamListPojo@1150594}
[p_csacas, f_ascasc]
[rrrrrr]
{p_csacas=wrapperbuilder.ParamListPojo@1150594, f_ascasc=wrapperbuilder.ParamListPojo@26df23}
MouseClickEvent , procedure is p_csacas
[]
因此我们可以看到,在添加过程时,值列在两个列表中,也在HashMAP中 但是,当鼠标点击GUI中的列表时,输出将变为空白。
请帮助我:-(
答案 0 :(得分:0)
问题解决了。
问题在于ParamListPojo
类中的arrayList的setter方法。
public void setParamList(ArrayList<String> procList) {
//this.prmList = procList;
prmList.addAll(procList);
}
之前我使用的是this.prmList = procList
现在我正在使用prmList.addAll(procList);