Hallo Leute,
ich möchte einen Knoten mehrmals in einem JTree verwenden (keine neue Instanz)
B
|..C
|.....A
D
| ... A
E
|.....A
Problem ist nun das "A" nur unter "E" angezeigt wird. Erzeuge ich "A" jedoch jeweils neu dann funktioniert es. A möchte ich aber nur eine Instanz haben da Db-Zugriff.
Nachfolgend der Quellcode
Projektliste welche Knoten C,D,E ... erzeugt
Code für die jeweiligen Knoten C,D,E hier wird A als Child element eingefügt
Hat jemand eine Idee warum "A" nur immer an der letzten Position angezeigt wird und was ich anstellen muss ohne jedesmal "A" neu zu erzeugen.
Danke schon mal
ich möchte einen Knoten mehrmals in einem JTree verwenden (keine neue Instanz)
B
|..C
|.....A
D
| ... A
E
|.....A
Problem ist nun das "A" nur unter "E" angezeigt wird. Erzeuge ich "A" jedoch jeweils neu dann funktioniert es. A möchte ich aber nur eine Instanz haben da Db-Zugriff.
Nachfolgend der Quellcode
Projektliste welche Knoten C,D,E ... erzeugt
Code:
package myjobadmin.MyProjects;
import myjobadmin.MyDatabase.*;
import java.sql.ResultSet;
import myjobadmin.MyProjects.*;
import java.util.Vector;
import javax.swing.tree.DefaultMutableTreeNode;
import myjobadmin.MyAssemblies.MyMainAssemblyList;
import myjobadmin.MyOutprint;
public class MyProjectList {
private MyDatabase mdb;
private Vector data;
private DefaultMutableTreeNode root;
private MyMainAssemblyList mainAssList;
/* Konstruktor (ohne BG) */
public MyProjectList(MyDatabase _mdb) {
MyOutprint.print(0, this, "Konstruktor ohne BG wird gestartet");
this.mdb = _mdb;
this.root = new DefaultMutableTreeNode("Projekte");
this.mainAssList = null;
this.init();
}
/* Konstruktor (mit BG)*/
public MyProjectList(MyDatabase _mdb, MyMainAssemblyList _mainAssList) {
MyOutprint.print(0, this, "Konstruktor mit BG wird gestartet");
this.mdb = _mdb;
this.root = new DefaultMutableTreeNode("Projekte");
this.mainAssList = _mainAssList;
this.init();
}
/* Initialisierung */
private void init(){
try{
// hier Aktualität prüfen
this.readProjectsFromDb();
}catch(Exception e_init){
}
}
/* Projekte aus Datenbank auslesen */
private void readProjectsFromDb() throws Exception{
MyOutprint.print(1, this, "readProjectsFromDb() wird gestartet ...");
String strSQL = "SELECT * FROM myprojectlist ORDER BY Projektnummer ASC";
ResultSet rstData = mdb.executeQueryRST(strSQL);
// Spalten
int cols = rstData.getMetaData().getColumnCount();
String[] columnNames = new String[cols];
for(int i=0; i<cols; i++) columnNames[i] = rstData.getMetaData().getColumnName(i+1);
// Daten (sortiert nach Projektnummer)
this.data = new Vector();
int projectNumber;
Object data[];;
rstData.beforeFirst();
int c=0;
while(rstData.next()){
projectNumber = rstData.getInt("Projektnummer");
data = new Object[cols];
for(int j=0; j<cols; j++){
data[j] = rstData.getObject(j+1);
}
if( this.mainAssList != null ){
this.data.add(new MyProject(projectNumber, columnNames, data, this.mainAssList) );
} else
this.data.add(new MyProject(projectNumber, columnNames, data) );
// Zu Knoten hinzufügen
this.root.add( ((MyProject)this.data.get(c)).getNode() );
c++;
}
}
/* Knoten */
public DefaultMutableTreeNode getNode(){
return this.root;
}
}
Code für die jeweiligen Knoten C,D,E hier wird A als Child element eingefügt
Code:
package myjobadmin.MyProjects;
import myjobadmin.MyOutprint;
import javax.swing.tree.DefaultMutableTreeNode;
import myjobadmin.MyAssemblies.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2011</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class MyProject {
private Object[] propertyValues;
private String[] propertyNames;
private int projectNumber;
private DefaultMutableTreeNode node;
private MyMainAssemblyList mainAssList;
private DefaultMutableTreeNode nodeChild;
/* Konstruktor */
public MyProject(int _projectNumber, String[] _propertyNames, Object[] _propertyValues) {
this.propertyNames = _propertyNames;
this.propertyValues = _propertyValues;
this.projectNumber = _projectNumber;
// Baugruppen (hier keine)
this.mainAssList = null;
this.node = new DefaultMutableTreeNode(this);
}
/* Konstruktor */
public MyProject(int _projectNumber, String[] _propertyNames, Object[] _propertyValues, MyMainAssemblyList _mainAssList) {
this.propertyNames = _propertyNames;
this.propertyValues = _propertyValues;
this.projectNumber = _projectNumber;
// Baugruppen
this.mainAssList = _mainAssList;
this.node = new DefaultMutableTreeNode(this);
this.node.add( this.mainAssList.getTree() );
}
/* Projektnummer */
public int getProjectNumber(){
return this.projectNumber;
}
/* Eigenschaft */
public Object getPropValue(String _propertyName){
MyOutprint.print(1, this, "getPropValue() für \""+_propertyName+"\" wird gestartet ...");
for(int i=0; i<this.propertyNames.length; i++)
if(propertyNames[i].equals(_propertyName)) return this.propertyValues[i];
return null;
}
/* Knoten */
public DefaultMutableTreeNode getNode(){
return this.node;
}
}
Hat jemand eine Idee warum "A" nur immer an der letzten Position angezeigt wird und was ich anstellen muss ohne jedesmal "A" neu zu erzeugen.
Danke schon mal