2016-03-25 5 views
0

Ich arbeite an Swing und kann den Wert arrayList nicht abrufen, der in einem Objekt gespeichert ist, das dann in einem hashMap gespeichert wird.Wert kann nicht aus ArrayList abgerufen werden, das in einem Objekt gespeichert ist, und in einer HashMap gespeichertes Objekt

system.out.println druckt keine Werte.

Mein Code enthält eine Prozedurliste und eine Parameterliste. auf die Add Parameter Taste Nach einem Klick die Parameter paramList ist

Wenn add Prozedur Taste, um die Prozedur geholt von textfield geklickt werden eingebaut in procList gespeichert wird.

Werte von paramList werden in neuem Objekt gespeichert (Objekt enthält Arraylist mit Getter und Setter)

Die Hashmap speichert die Prozedur Namen wie key und das Objekt als value

Dann habe ich ein anderes Ereignis, wo Wir klicken auf Prozedur Liste auf GUI, dann holen wir den ausgewählten Prozedurnamen,

Der ausgewählte Prozedurname kann als Schlüssel verwendet werden, um Wert von der HashMap zu holen. erhalten wir die Array-Liste der Parameter von hashmap mit dem Schlüssel.

Aber als ich versuchte, in der GUI angezeigt werden dann war es leer, dann habe ich versucht, um zu sehen, ob Werte sind mit System.out.println und keinen Wert von gedruckten :-(

Das Problem mit private void getParameterList ist

hier ist der Code.

//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); 
     } 

die Konsolenausgabe

[p_csacas] 
[scasca, ascacasc, ascacs] 
{[email protected]} 
[p_csacas, f_ascasc] 
[rrrrrr] 
{[email protected], [email protected]} 
MouseClickEvent , procedure is p_csacas 
[] 
ist 210

So können wir sehen, während das Hinzufügen der Prozedur die Werte gibt es in beiden Listen und auch in der HashMAP Aber beim Abrufen bei Mausklick auf Liste in GUI, wird die Ausgabe leer.

Beispiel-Bild von GUI wird als gegeben Sample Image of GUI

Bitte helfen Sie mir mit diesem :-(

Antwort

0

Das Problem ist gelöst. Das Problem mit der Setter-Methode der Arraylist in ParamListPojo Klasse.

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

zuvor i wurde mit der this.prmList = procList jetzt bin ich mit prmList.addAll(procList);

Verwandte Themen