Hallo Leute,
ich habe mir eine Swing-GUI zusammengebaut, welche mein Netz durchscannt und alle vorhandenen Rechner und die drauf laufenden Virtuellen Maschinen als JTree anzeigt.
Ausserdem habe ich einen Timer am Laufen, welcher alle 30 Sekunden das Netz wiedermals durchscannt und eventuelle Veränderungen im Jtree abändert und diesen dann wieder neu aufbaut. Komischerweise wird meine GUI nach jedem Timer-Ablauf wieder komplett als neues Fenster geöffnet (d.h. nach dem ersten Durchlauf habe ich 2 GUI-Fenster, nach dem zweiten Durchlauf 3, usw.).
Entferne ich das zweite Scannen meines Netzes (Zeile 21) und lasse nur den Jtree neu zeichnen (obwohl so natürlich keine Veränderungen vorgenommen wurden) bleibt es bei einem Fenster welches einfach neu geladen wird. Wie kommt's bitte dazu?!
Hier mein Code:
ich habe mir eine Swing-GUI zusammengebaut, welche mein Netz durchscannt und alle vorhandenen Rechner und die drauf laufenden Virtuellen Maschinen als JTree anzeigt.
Ausserdem habe ich einen Timer am Laufen, welcher alle 30 Sekunden das Netz wiedermals durchscannt und eventuelle Veränderungen im Jtree abändert und diesen dann wieder neu aufbaut. Komischerweise wird meine GUI nach jedem Timer-Ablauf wieder komplett als neues Fenster geöffnet (d.h. nach dem ersten Durchlauf habe ich 2 GUI-Fenster, nach dem zweiten Durchlauf 3, usw.).
Entferne ich das zweite Scannen meines Netzes (Zeile 21) und lasse nur den Jtree neu zeichnen (obwohl so natürlich keine Veränderungen vorgenommen wurden) bleibt es bei einem Fenster welches einfach neu geladen wird. Wie kommt's bitte dazu?!
Hier mein Code:
Java:
public class WebserverUtilizer extends javax.swing.JFrame implements
SimulationListener {
// Variables declaration
List<NetzStruktur> networkEntities = new ArrayList<Netzstruktur>();
public static void main(String args[]) {
// Einlesen der Struktur des Netzes
networkEntities.add("Rechner");
networkEntities.add("VMs");
new WebserverUtilizer();
}
public WebserverUtilizer(){
// new JFrame(), usw.
createJTreeFromNetworkEntities();
setVisible(true);
ActionListener action = new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
refreshTree(); // hier wird das Netz neu eingelesen und kann dann
// im JTree upgedated werden (hier drunter!)
root.removeAllChildren();
for (int h=0; h<networkEntities.size();h++) {
NetworkEntity networkEntity = networkEntities.get(h);
DefaultMutableTreeNode entityNode = new DefaultMutableTreeNode(networkEntity);
model.insertNodeInto(entityNode, root, root.getChildCount()); //hier werden Rechner als Knoten in den JTree eingefügt
for (VirtualMachine vm : networkEntity.getVirtualMachines()) {
if (vm.getHostIP().equals(networkEntity.getIP())) {
model.insertNodeInto(new DefaultMutableTreeNode(vm), entityNode, entityNode.getChildCount()); // hier werden VMs an die Rechner-Nodes im JTree eingefügt.
}
}
}
model.reload();
expandAll(tree);
}
};
new Timer( 5000, action).start();
}
}