2016-03-21 11 views
2

Ich arbeite an der Erweiterung einer Anwendung, die eine Java Swing GUI hat. Ich habe die Geschäftslogik erweitert und die erforderliche Funktionalität hinzugefügt, aber jetzt wollte ich die Benutzeroberfläche verbessern. Ich habe noch nie mit Swing gearbeitet und der Code ist überhaupt nicht leicht zu lesen.Swing UI Layout Analyse

Gibt es eine Möglichkeit, die UI-Komponenten zu analysieren/zu identifizieren, während die Anwendung ausgeführt wird? Ich verwende IntelliJ als IDE.

+0

warum nicht mit javaFX, um die Benutzeroberfläche für Java-Desktop-Anwendung zu erweitern. –

+0

Ich habe noch nie javaFX verwendet. Es gibt einige benutzerdefinierte Komponenten, die JPanel erweitern. Ich bin es gewohnt, an Android zu arbeiten, aber das ist eine Desktop-Anwendung. –

+0

Ich habe nicht intellij verwendet, aber in Netbeans gibt es zwei Dateien 1 Formulardatei für jede Benutzeroberfläche. Sie könnten auf die Benutzeroberfläche doppelklicken und den Code durchgehen (z. B. für Schaltflächen). –

Antwort

1

Wenn Sie die IntelliJ GUI Builder verwenden

Ich schlage vor, einen Blick auf diese beiden Websites, here und here nehmen.

Sie gehen über, wie Sie Set the components properties. Auf diese Weise können Sie mit verschiedenen Vordergrund- und Hintergrundfarben experimentieren, sodass Sie beim Starten der Anwendung feststellen können, welche Komponente welche ist.

Mehr in die Tiefe auf die Eigenschaften können here

Sie können auch die Variablennamen für jede Komponente eingestellt zu finden, die Ihnen erlaubt, um sie leichter in den Code zu finden.

Wenn Sie immer noch Probleme haben, Komponenten im Quellcode zu finden, hat IntelliJ einen guten Weg zu Search The Source Code für alles, was Sie finden möchten.

Wenn Sie die Anwendung von Hand

Wie bei den GUI-Builder, können Sie sich die Hintergrundfarben und so eingestellt, durch etwas ähnliches wie component.setBackground(Color.BLUE); mit ihnen leichter zu finden, wenn die Anwendung ausgeführt wird. Sie könnten auch einige Standardelemente wie z. B. JTextArea mit textArea.setText("My Text"); angeben.

Hier sind einige gute lesen auf Swing Naming Conventions und nur Java Naming Conventions im Allgemeinen. Dies ermöglicht Ihnen, Ihren Code in einer saubereren, leichter lesbaren Weise zu gestalten.

Es gibt auch this Website, die über was jedes Swing-Komponente aussieht. Sie können auf jede Komponente klicken, um weitere Informationen zu erhalten.

Als eine allgemeinere Antwort, schlage ich vor, über ein paar der Oracle Swing Tutorials zu schauen, um ein besseres Gesamtwissen über Swing und seine Fähigkeiten zu bekommen. Ich persönlich empfehle die Verwendung von GUI-Buildern jeglicher Art nicht. Sie erhalten nicht das gleiche Wissen wie von Hand.

0

Um mehr GUI-Builder zu sprechen: Sie neigen auch dazu, eine Menge Code zu generieren, der schwer zu verstehen ist. GUI-Builder sind möglicherweise optimal, um schnelle GUIs zu erstellen oder eine schnelle Skizze zu erstellen. Sie werden jedoch nicht für komplexe GUI empfohlen, da der Code schwieriger zu verwalten ist. Der GUI-Builder von NetBeans ist ein gutes Beispiel dafür, dass er einfach zu verwenden ist, aber viel nicht editierbaren Code generiert. Window Builder Pro hingegen führt den gleichen, aber weniger unordentlichen Code aus als der GUI-Builder von NetBeans, ermöglicht Ihnen jedoch, den generierten Code zu bearbeiten.

1

Diese Methode:

public static void showStructure(Container container, int depth) { 
    Component[] components = container.getComponents(); 
    StringBuilder indent = new StringBuilder(); 
    for (int ii = 0; ii < depth; ii++) { 
     indent.append("\t"); 
    } 
    for (int ii = 0; ii < components.length; ii++) { 
     System.out.print(indent); 
     Component component = components[ii]; 
     System.out.print(component.getClass().getSimpleName() + "\t"); 
     if (component instanceof Container) { 
      Container c = (Container) component; 
      System.out.println(c); 
      showStructure(c, depth+1); 
     } 
    } 
} 

Auf this GUI:

Produziert:

JRootPane javax.swing.JRootPane[,8,30,633x454,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=] 
    JPanel javax.swing.JPanel[null.glassPane,0,0,633x454,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=] 
    JLayeredPane javax.swing.JLayeredPane[null.layeredPane,0,0,633x454,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true] 
     JPanel javax.swing.JPanel[,0,0,633x454,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize=] 
      JPanel javax.swing.JPanel[,5,18,623x54,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize=] 
       JComboBox javax.swing.JComboBox[,338,21,126x25,layout=javax.swing.plaf.metal.MetalComboBoxUI$MetalComboBoxLayoutManager,alignmentX=0.0,alignmentY=0.0,border=,flags=328,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=Metal] 
        MetalComboBoxButton javax.swing.plaf.metal.MetalComboBoxButton[,106,0,20x25,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=12583208,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=java.awt.Insets[top=0,left=1,bottom=1,right=3],paintBorder=true,paintFocus=false,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
        CellRendererPane javax.swing.CellRendererPane[,0,0,0x0,hidden] 
       JCheckBox javax.swing.JCheckBox[,467,21,148x24,alignmentX=0.0,alignmentY=0.5,bo[email protected]628370,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=false,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Pack on PLAF change] 
      JPanel javax.swing.JPanel[,5,77,148x372,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize=] 
       JButton javax.swing.JButton[,5,18,138x26,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Add Another Label,defaultCapable=true] 
       JScrollPane javax.swing.JScrollPane[,5,48,138x319,layout=javax.swing.ScrollPaneLayout$UIResource,alignmentX=0.0,alignmentY=0.0,[email protected]bfc,flags=328,maximumSize=,minimumSize=,preferredSize=,columnHeader=,horizontalScrollBar=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1],horizontalScrollBarPolicy=HORIZONTAL_SCROLLBAR_AS_NEEDED,lowerLeft=,lowerRight=,rowHeader=,upperLeft=,upperRight=,verticalScrollBar=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1],verticalScrollBarPolicy=VERTICAL_SCROLLBAR_AS_NEEDED,viewport=javax.swing.JViewport[,1,1,135x316,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false],viewportBorder=] 
        JViewport javax.swing.JViewport[,1,1,135x316,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false] 
         JPanel javax.swing.JPanel[,0,0,135x316,layout=java.awt.GridLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize=] 
        ScrollBar javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
        ScrollBar javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
      JSplitPane javax.swing.JSplitPane[,158,77,470x372,layout=javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager,alignmentX=0.0,alignmentY=0.0,[email protected]e,flags=201326920,maximumSize=,minimumSize=,preferredSize=,continuousLayout=false,dividerSize=10,lastDividerLocation=0,oneTouchExpandable=false,orientation=VERTICAL_SPLIT] 
       JScrollPane javax.swing.JScrollPane[,1,1,468x134,layout=javax.swing.ScrollPaneLayout$UIResource,alignmentX=0.0,alignmentY=0.0,[email protected]cd7,flags=328,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=468,height=134],columnHeader=javax.swing.JViewport[,1,1,450x20,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false],horizontalScrollBar=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1],horizontalScrollBarPolicy=HORIZONTAL_SCROLLBAR_AS_NEEDED,lowerLeft=,lowerRight=,rowHeader=,upperLeft=,upperRight=,verticalScrollBar=javax.swing.JScrollPane$ScrollBar[,451,21,15x111,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1],verticalScrollBarPolicy=VERTICAL_SCROLLBAR_AS_NEEDED,viewport=javax.swing.JViewport[,1,21,450x111,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false],viewportBorder=] 
        JViewport javax.swing.JViewport[,1,21,450x111,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false] 
         JTable javax.swing.JTable[,0,0,450x896,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=122,g=138,b=153],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],showHorizontalLines=true,showVerticalLines=true] 
          CellRendererPane javax.swing.CellRendererPane[,0,0,0x0,hidden] 
        ScrollBar javax.swing.JScrollPane$ScrollBar[,451,21,15x111,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,96,15x15,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,15x15,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
        ScrollBar javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
        JViewport javax.swing.JViewport[,1,1,450x20,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false] 
         JTableHeader javax.swing.table.JTableHeader[,0,0,450x20,alignmentX=0.0,alignmentY=0.0,border=,flags=16777544,maximumSize=,minimumSize=,preferredSize=,draggedDistance=0,reorderingAllowed=true,resizingAllowed=true,updateTableInRealTime=true] 
          CellRendererPane javax.swing.CellRendererPane[,0,0,0x0,hidden] 
       JScrollPane javax.swing.JScrollPane[,1,145,468x226,layout=javax.swing.ScrollPaneLayout$UIResource,alignmentX=0.0,alignmentY=0.0,[email protected]bfc,flags=328,maximumSize=,minimumSize=,preferredSize=,columnHeader=,horizontalScrollBar=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1],horizontalScrollBarPolicy=HORIZONTAL_SCROLLBAR_AS_NEEDED,lowerLeft=,lowerRight=,rowHeader=,upperLeft=,upperRight=,verticalScrollBar=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1],verticalScrollBarPolicy=VERTICAL_SCROLLBAR_AS_NEEDED,viewport=javax.swing.JViewport[,1,1,465x223,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false],viewportBorder=] 
        JViewport javax.swing.JViewport[,1,1,465x223,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false] 
         JPanel javax.swing.JPanel[,0,0,465x223,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize=] 
          JLabel javax.swing.JLabel[,132,18,200x200,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,[email protected],disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER] 
        ScrollBar javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
        ScrollBar javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=javax.swing.plaf.metal.MetalScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
         MetalScrollButton javax.swing.plaf.metal.MetalScrollButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,bo[email protected]f62048,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true] 
       MetalSplitPaneDivider javax.swing.plaf.metal.MetalSplitPaneDivider[,1,135,468x10,layout=javax.swing.plaf.basic.BasicSplitPaneDivider$DividerLayout] 
2

Presse CTRL +SHIFT + F1 während Ihr Programm ausgeführt wird, um einen Speicherauszug der Swing-Containerhierarchie anzuzeigen. Vergleichen Sie es mit den genannten here oder here.