2016-03-25 48 views
0

我正在使用Swing,我无法从保存在对象中的arrayList中获取值,然后将其保存在hashMap中。无法从保存在对象中的ArrayList中获取值,并且保存在哈希映射中的对象

system.out.println打印任何值。

我的代码包含一个程序列表和参数列表。 点击添加参数按钮后的参数被添加到paramList

附加程序按钮被点击从textfield获取程序保存在procList。从paramList

值保存在新的对象(对象包含ArrayList中的getter和setter)

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] 
{[email protected]} 
[p_csacas, f_ascasc] 
[rrrrrr] 
{[email protected], [email protected]} 
MouseClickEvent , procedure is p_csacas 
[] 

所以我们可以看到在添加过程中的值有两个列表,也ANS在HashMap中 但同时获取关于在GUI列表点击鼠标,输出来的空白。作为给定的GUI的

样品图像 Sample Image of GUI

请帮我这个:-(

回答

0

的问题就解决了。 的问题是用的ArrayList中ParamListPojo类的setter方法。

public void setParamList(ArrayList<String> procList) { 
     //this.prmList = procList; 
       prmList.addAll(procList); 
    } 

以前我用的是this.prmList = procList 我现在用prmList.addAll(procList);