Mohl bys to ošetřit výjimkou. Když dojde k výjimce, objekt neexistuje a ty ho vytvoříš.
Mohl bys to ošetřit výjimkou. Když dojde k výjimce, objekt neexistuje a ty ho vytvoříš.
Naposledy upravil frelichl; 22.12.2006 v 13:16.
Lenovo X200 | Lenovo Ultrabase | Sennheiser HD 595 | Fujitsu Siemens P19-2 Black | Logitech Internet Navigation Keyboard | Logitech VX Revolution
1) BigPiG System mk2 Phenom II x4 955; 4x2048MB DDR3; MSI FX890-GD70; CF 5830; VelociRaptor 300GB + 2xSeagate SV35.5 2TB RAID1 + Samsung F1 750GB + Samsung F2 1,5TB;Lian Li PC-8FIB; 2408WFP
2) PigPics E-500 + ZD 1445 + ZD 4015 + SanDisk ExtremeIII 4GB + Lexar Premium 1GB - IndoCertified
3) Pig@Work CATIA V5 r14-r18 @ Precision T5500: Intel W5590, Quadro FX3800 & Dell Ultrasharp U2410 & SpacePilot guaranteeing a minimum of 120 clicks per minute
4) PigFun Ubuntu 9.10 @ Corsair Flash Voyager 16GB @ Mobile PiG - HP nw8240 M770; FireGL v5000; 15.4" @ 1920x1200; 1+1GB RAM
5) MiniPig Lenovo X201i: i3 370M; 12" 1280x800 matte; 2GB DDR3 RAM; 6+ hours battery lifetime
myslel jsem něco ve stylu:
Ale to je blbost, nešlo by to ani zkompilovat. Teď jsem si to hodil do Netbeans a ať se dívám, jak se dívám, zdá se mi, že tvoje řešení, co tam teď máš funguje tak jak chceš, obejkt vzniká jenom jednou, v čem je teda problém?Kód:try { tree.show(); } catch (Exception e) { tree = new AppWindow(value); tree.show(); }
Lenovo X200 | Lenovo Ultrabase | Sennheiser HD 595 | Fujitsu Siemens P19-2 Black | Logitech Internet Navigation Keyboard | Logitech VX Revolution
Problem je ze pokad zapisu do stromu nejaky hodnoty a zkusim zobrazit strom jinyho produktu, zobrazi se strom ten jeden a puvodni... ach jo...
1) BigPiG System mk2 Phenom II x4 955; 4x2048MB DDR3; MSI FX890-GD70; CF 5830; VelociRaptor 300GB + 2xSeagate SV35.5 2TB RAID1 + Samsung F1 750GB + Samsung F2 1,5TB;Lian Li PC-8FIB; 2408WFP
2) PigPics E-500 + ZD 1445 + ZD 4015 + SanDisk ExtremeIII 4GB + Lexar Premium 1GB - IndoCertified
3) Pig@Work CATIA V5 r14-r18 @ Precision T5500: Intel W5590, Quadro FX3800 & Dell Ultrasharp U2410 & SpacePilot guaranteeing a minimum of 120 clicks per minute
4) PigFun Ubuntu 9.10 @ Corsair Flash Voyager 16GB @ Mobile PiG - HP nw8240 M770; FireGL v5000; 15.4" @ 1920x1200; 1+1GB RAM
5) MiniPig Lenovo X201i: i3 370M; 12" 1280x800 matte; 2GB DDR3 RAM; 6+ hours battery lifetime
Už si rozumíme. No důvod proč se to děje je vcelku jasnej. Jak se ten program má chovat? Mám otevřený nějaké okno PartTree a když znovu kliknu na tlačítko PartTree u jiného kola, tak se má otevřít nové okno "PartTree" anebo se má nahradit původní nově otevřeným?
Lenovo X200 | Lenovo Ultrabase | Sennheiser HD 595 | Fujitsu Siemens P19-2 Black | Logitech Internet Navigation Keyboard | Logitech VX Revolution
Jestli te dobre chapu tak to presne co chce je Singleton. S nim budes mit pouze jedinou instanci dane tridy, pokud s nim budes zachazet dle jeho pravidel(tedy volat pres getInstance()). Jinak pokud chce pracovat se stromy, i pro ne ma Java ve standardnich knihovnach oporu.
Naposledy upravil jedik; 22.12.2006 v 17:11.
to je právě vcelku jedno, jestli se bude nahrazovat nebo jich bude otevřeno víc. Radši bych aby se otvíralo vždycky jenom jedno (tj aby se nahradilo).
Hlavní je, aby pokuď do Part tree produktu A vložím řekněme Motor, aby to v tom PartTree zůstalo (znova otevřu to samy PartTree produktu A, původně vložený Motor tam bude).
Moje úvaha (sice blbá, ale moje) - mám řekněme 5 produktů, tak si udělám 5 různejch instancí třídy PartTree a pak do oněch různejch instancí můžu vkládat díly.
Teď jsem v situaci, že se mi při každém zmáčknutí tlačítka Part Tree vytvoří NOVÁ instance Part Tree (je to vidět v konzoli, že adresa na treeModely je různá pokuď si dvakrát po sobě vyvolám Part Tree pro stejnej jeden prodkut), proto potřebuju tu existenční podmínku (už existuje Part tree pro produkt A? tak ho nevytvářej znovu a jenom ukaž. Pokud neexistuje, tak vytvoř Part Tree pro produkt A a ukaž ho).
@jedik - tohle asi nebude ono, moc sem to nepochopil. ale díky, K+ bohužel nemůžu poslat...
přikládám aktuální kód.
Naposledy upravil Doktor-Prase; 23.12.2006 v 12:07. Důvod: zmatky
1) BigPiG System mk2 Phenom II x4 955; 4x2048MB DDR3; MSI FX890-GD70; CF 5830; VelociRaptor 300GB + 2xSeagate SV35.5 2TB RAID1 + Samsung F1 750GB + Samsung F2 1,5TB;Lian Li PC-8FIB; 2408WFP
2) PigPics E-500 + ZD 1445 + ZD 4015 + SanDisk ExtremeIII 4GB + Lexar Premium 1GB - IndoCertified
3) Pig@Work CATIA V5 r14-r18 @ Precision T5500: Intel W5590, Quadro FX3800 & Dell Ultrasharp U2410 & SpacePilot guaranteeing a minimum of 120 clicks per minute
4) PigFun Ubuntu 9.10 @ Corsair Flash Voyager 16GB @ Mobile PiG - HP nw8240 M770; FireGL v5000; 15.4" @ 1920x1200; 1+1GB RAM
5) MiniPig Lenovo X201i: i3 370M; 12" 1280x800 matte; 2GB DDR3 RAM; 6+ hours battery lifetime
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:
Metoda partTreeButton_actionPerformed vypadá nyní takto:Kód:ArrayList<TreeWindow> trees = new ArrayList<TreeWindow>();
A dál ještě upravíš třídu TreeWindow.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(); } }
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:Kód:public Part id;
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.Kód:id = obj;
Lenovo X200 | Lenovo Ultrabase | Sennheiser HD 595 | Fujitsu Siemens P19-2 Black | Logitech Internet Navigation Keyboard | Logitech VX Revolution
Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)