Ik ben met een Java Swing opdracht bezig, waar ik een simpel klantadministratie programma moet bouwen. Maar ik zit met het volgende probleem:
Ik heb een JSplitPane. In de linkerhelft zit een JTable met unieke klant id's die uit een db worden gehaald. Als ik op 1 van die klant id's klik, verschijnt er in de rechterhelft van de JSplitPane een JInternalFrame.
Het probleem: Als ik meerdere keren op eenzelfde klant id klik, krijg ik ook meerdere JInternalFrames te zien.
Terwijl het de bedoeling is, dat als er al een JInternalFrame van een klant id open staat, dat er niet nog een van diezelfde klant geopend mag worden.
Waar het om draait is dat ik wil controleren of de JInternalFrame al bestaat of niet.
Ik heb het geprobeerd met de volgende code, maar het probleem hierbij is dat de Array frames steeds groter wordt als de methode wordt aangeroepen
Ik heb een JSplitPane. In de linkerhelft zit een JTable met unieke klant id's die uit een db worden gehaald. Als ik op 1 van die klant id's klik, verschijnt er in de rechterhelft van de JSplitPane een JInternalFrame.
Het probleem: Als ik meerdere keren op eenzelfde klant id klik, krijg ik ook meerdere JInternalFrames te zien.
Terwijl het de bedoeling is, dat als er al een JInternalFrame van een klant id open staat, dat er niet nog een van diezelfde klant geopend mag worden.
Waar het om draait is dat ik wil controleren of de JInternalFrame al bestaat of niet.
Ik heb het geprobeerd met de volgende code, maar het probleem hierbij is dat de Array frames steeds groter wordt als de methode wordt aangeroepen
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| //Create a new internal frame. public void createFrame(int selectedRow) { JInternalFrame[] frames; frames = desktop.getAllFrames(); System.out.println(frames.length); if (frames.length > 0){ for (int i=0; i<frames.length; i++) { // Get internal frame's title System.out.println(desktop.getAllFrames()[i].getName()); String title = frames[i].getTitle(); String temp = "Klant #" + (selectedRow); if (temp.equalsIgnoreCase(title)){ try { frames[i].setSelected(true); } catch (java.beans.PropertyVetoException e) {} } else { MyInternalFrame frame = new MyInternalFrame(selectedRow); frame.setVisible(true); desktop.add(frame); try { frame.setSelected(true); } catch (java.beans.PropertyVetoException e) {} } } } else { MyInternalFrame frame = new MyInternalFrame(selectedRow); frame.setName("Frame" + selectedRow); frame.setVisible(true); desktop.add(frame); try { frame.setSelected(true); } catch (java.beans.PropertyVetoException e) {} } } |