JTree selektion - Tabelleninhalte ändern

cr3m4

Mitglied
Hallo,

ich habe ein eigentlich recht simples Problem, bei dem ich momentan nicht weiterkomme.
Ich habe ein JTree und möchte je nach Auswahl des leafs, bestimmte Werte in eine Tabelle anzeigen. (die Werte kommen aus einer seperaten Tabelle)
Für das Problem habe ich einen eigenen Treeselectionlistener erstellt.
Nur klappt die Werteübergabe nicht so recht.

Hier ein Beispiel:

Der SelectionListener:
Code:
class customSelectionListener implements TreeSelectionListener{

        public void valueChanged(TreeSelectionEvent e) {
            // TODO Auto-generated method stub
            DefaultMutableTreeNode node = (DefaultMutableTreeNode)
            systemParameter_jTree1.getLastSelectedPathComponent();

           // System.out.println(node.getUserObject());
           
            if(node.getUserObject().toString().contains("bla"))
            {
              
                      new tableContent().cell1=tempjTable1.getValueAt(0, 1).toString();
             
            }
           
            }
        }


für die Tabelleninhalte:
Code:
class tableContent{
      
   public String cell1="";
   
   public String[][] tablevals()
      {
         String values[][]= new String[1][3];
         
         values[0][0]=cell1;
         
         return values;
         
      }
   }


Die Tabelle:

Code:
private JTable getjTable1() {
         if(jTable1 == null) {
            
         tableContent content=new tableContent();
               
            TableModel jTable1Model =
               new DefaultTableModel(
                     content.tablevals(),
                     new String[] { "Name"});

            jTable1 = new JTable();
            jTable1.setModel(jTable1Model);
         }
         return jTable1;
   }



habt ihr ne Idee was ich verkehrt mach?
 
Hallo,

mich würde mal interessieren wo du die Daten an die Tabelle übergibst.

MFG

Sascha
 
ich dachte im SelectionListener:

new tableContent().cell1=tempjTable1.getValueAt(0, 1).toString();

:)
 
new tableContent().cell1=tempjTable1.getValueAt

Du erzeugst eine neue Instanz deiner Tabelle - und ...
was machst du damit?
Blumen gießen?
Kuchen backen?

Die Instanz hängt vollkommen in der Luft, wird nirgendwo abgespeichert, du glaubst gar nicht wie schnell die der gefräßige Garbage-Collector samt Inhalt verschlingt.

Zudem macht es keinen Sinn, bei jeder Selektion die Tabelle neu zu erzeugen.
Du solltest lediglich die Daten der Tabelle austauschen, dafür wirst du bei der Tabelle einen Setter brauchen.
 
Wie shutdown schon sagt, du machst da gar nichts.

Es gibt zwei einfache Möglichkeiten wie du es machen könntest. Entweder du setzt deiner Tabelle ein neues Model oder du änderst die Daten in deinem Model.

Für die zweite Lösung würde ich dir empfehlen, dass du dir das DefaultTableModel mal anschaust.

MFG

Sascha
 
geil, die Methode ...getModel().setValueAt... habe ich gesucht und erst nicht gefunden, deshalb habe ich so wahllos rumprobiert.

Danke nochmal :)
 
Zurück