tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
218
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xoom4 xoom4 ist offline Mitglied
    Registriert seit
    Jun 2011
    Beiträge
    24
    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
     

  2. #2
    xoom4 xoom4 ist offline Mitglied
    Registriert seit
    Jun 2011
    Beiträge
    24
    Ich habe eine mögliche Lösunge gefunden indem nach der verschiebung des JDesktopPane auf alle JInternalFrames ein firePropertyChange durchführt 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)
      }
    }...
    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.
     

Ähnliche Themen

  1. Komisches RegExp Verhalten
    Von ElGrAnDiOs im Forum PHP
    Antworten: 4
    Letzter Beitrag: 17.04.10, 12:18
  2. komisches Verhalten des Debuggers?
    Von DerStauner im Forum .NET Café
    Antworten: 4
    Letzter Beitrag: 09.06.09, 21:14
  3. Volltextsuche: komisches Verhalten
    Von prinzschleifer im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 26.09.08, 15:24
  4. Komisches Verhalten
    Von alice007 im Forum Cinema 4D
    Antworten: 7
    Letzter Beitrag: 27.03.07, 15:13
  5. Komisches Verhalten des Firefox
    Von sreinhardt im Forum Internet, DSL & Flatrate
    Antworten: 0
    Letzter Beitrag: 01.03.06, 03:07