ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
218
218
EMPFEHLEN
-
Ich habe ein JTabbedPane in einem Frame. Der Frame hat ein MenuBar das beim drücken von Ctrl + N ein neuen Tab erstellen soll. Die Tabs haben alle ein JPanel welches ein BorderLayout inne hat. Inerhalb des BorderLayout wird ein JDesktopPane im BorderLayout.CENTER platziert. Dabei gibt es nur ein JDesktopPane das beim wechsel der Tabs von einem Tab zum anderen verschoben werden soll und zwar mittels der Methode remove und add. Zum anfang mal hier das Stückchen Code in Scala, sollte aber für Java coder leicht verständlich sein:
Code :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
class MyTabbedPane extends javax.swing.JTabbedPane { var index = 0 var desktop = new javax.swing.JDesktopPane var panels = scala.collection.mutable.Buffer[javax.swing.JPanel]() def newTab { if(index > 0) // Wenn zweites Tab, entferne JDesktopPane vom ersten Tab panels(index - 1).remove(desktop) // Hier wird das JDesktopPane hinzugefügt bzw. verschoben. panels += new javax.swing.JPanel(new java.awt.BorderLayout) { add(desktop, java.awt.BorderLayout.CENTER) } insertTab("Tab " + (index + 1), null, panels(index), "", index) var frame = new javax.swing.JInternalFrame("IFenster " + (index + 1), true, true, true) desktop.add(frame) frame.show frame.setBounds(0 * index, 0, 200, 200) frame.setMaximum(true) // <- Diese Methode macht probleme. index += 1 } }
Ich teste ausschliesslich 2 JInternalFrames, also zweimal Ctrl + N drücken und muss feststellen, dass das erste JInternalFrame nicht angezeigt wird. Das passiert übrigens nur wenn ich ganz schnell Ctrl + N drücke, wenn ich es langsam drücke werden beide JInternalFrames angezeigt. Oder wenn ich frame.setMaximum(true) entferne werden auch beim schnell Ctrl + N drücken beide JInternalFrames angezeigt.
Ich finde das ganze sehr merkwürdig und weiss nicht mehr weiter
Geändert von xoom4 (24.07.11 um 12:21 Uhr) Grund: Kleine Code korrektur
-
Ich habe eine mögliche Lösunge gefunden indem nach der verschiebung des JDesktopPane auf alle JInternalFrames ein firePropertyChange durchführt wird:
Danach verschwinden keine JInternalFrames mehr. Warum das so ist weiss ich nicht, scheint irgendwie ein Problem mit dem maximum zu sein. Beim obigen Code wird übrigens extra rückwärts gezählt damit die Z-Order beibehalten wird.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
... add(desktop, java.awt.BorderLayout.CENTER) } val frames = desktop.getAllFrames var i = frames.size while(i > 0) { i -= 1 if(iframes(i).isMaximum) { val normalBounds = frames(i).getNormalBounds frames(i).firePropertyChange(javax.swing.JInternalFrame.IS_MAXIMUM_PROPERTY, false, true) frames(i).setNormalBounds(normalBounds) } }...
Ähnliche Themen
-
Komisches RegExp Verhalten
Von ElGrAnDiOs im Forum PHPAntworten: 4Letzter Beitrag: 17.04.10, 12:18 -
komisches Verhalten des Debuggers?
Von DerStauner im Forum .NET CaféAntworten: 4Letzter Beitrag: 09.06.09, 21:14 -
Volltextsuche: komisches Verhalten
Von prinzschleifer im Forum Relationale DatenbanksystemeAntworten: 8Letzter Beitrag: 26.09.08, 15:24 -
Komisches Verhalten
Von alice007 im Forum Cinema 4DAntworten: 7Letzter Beitrag: 27.03.07, 15:13 -
Komisches Verhalten des Firefox
Von sreinhardt im Forum Internet, DSL & FlatrateAntworten: 0Letzter Beitrag: 01.03.06, 03:07





Zitieren
Login





