Tak jsem to snad vyřešil, jak moc prasácky jsem to udělal, to nevím, ale funguje to :).
Pricip je, že jednotlivé instance třídy TreeWindow si ukládáš do arraylistu, a díky tomu jsi potom schopnen zjistit, jestli daná instance už existuje nebo ne.
Proměnnou tree nebudeš potřebovat.
Na začátek třídy dej ten arraylist:
Kód:
ArrayList<TreeWindow> trees = new ArrayList<TreeWindow>();
Metoda partTreeButton_actionPerformed vypadá nyní takto:
Kód:
private void partTreeButton_actionPerformed(ActionEvent e){
int index = productList.getSelectedIndex();
Part value = (Part)productList.getSelectedValue();
int nalezeno = -1;
for (int i = 0; i < trees.size(); i++) {
if (trees.get(i).id.equals(value)) nalezeno = i;
}
if (nalezeno != -1) {
trees.get(nalezeno).show();
} else {
trees.add(new TreeWindow(value));
trees.get(trees.size() - 1).show();
}
}
A dál ještě upravíš třídu TreeWindow.
Přidáš tam veřejnou proměnnou id, ve které se bude uchovávat, k jakému prvku seznamu daná instance patří (tohle by asi šlo udělat jinak, ale nerozumím tvému kódu zrovna dopodrobna).
V konstruktoru třídy ještě nezapomeň na tohle:
Edit: při řešení jsem nevycházel z poslední verze, ale z té původní, doufám, žes to moc nezměnil. A přikládám projekt netbeans, ve kterém jsem to zkoušel.