我正在扩展具有Java Swing GUI的应用程序。我已经扩展了业务逻辑并添加了所需的功能,但现在我想改进UI。我从来没有用过swing,代码也不容易阅读。Swing UI布局分析
在应用程序运行时,有什么方法可以分析/识别UI组件吗?我使用IntelliJ作为IDE。
我正在扩展具有Java Swing GUI的应用程序。我已经扩展了业务逻辑并添加了所需的功能,但现在我想改进UI。我从来没有用过swing,代码也不容易阅读。Swing UI布局分析
在应用程序运行时,有什么方法可以分析/识别UI组件吗?我使用IntelliJ作为IDE。
如果您正在使用的IntelliJ GUI构建器
他们继续如何你可以Set the components properties。这样做可以让您使用不同的前景和背景颜色,这可以让您识别何时启动应用程序。
深入更多的属性,可以发现here
您也可以为每个组件,这将让你找到他们的代码更易于设置的变量名。
如果您仍然在查找源代码中的组件时遇到问题,IntelliJ有一个很好的方法来Search The Source Code任何你想找的。
如果你做手工
应用作为了GUI builder,你可以设置背景颜色等,通过使用类似component.setBackground(Color.BLUE);
有事找他们更容易在应用程序运行。您还可以通过使用textArea.setText("My Text");
将某些默认元素提供给某些内容,如JTextArea
。
这里有一些关于Swing Naming Conventions和Java Naming Conventions一般的很好的阅读。这将允许您将代码布置在清洁器中,更易于阅读时尚。
还有this网站可以查看每个摆动组件的外观。您可以点击每个组件以获取更多信息。
作为一个更一般的答案,我建议您查看一下Oracle Swing Tutorials以更好地了解Swing及其功能。我个人不建议使用任何形式的GUI构建器。你没有得到与手工完成相同的知识。
要讲更多的GUI构建器:它们也倾向于生成很多难以理解的代码。 GUI构建器可能最适合创建快速GUI或创建快速草图,但不推荐将其用于复杂的GUI,因为代码变得难以维护。 NetBeans的GUI构建器就是一个简单易用的好例子,但会生成大量不可编辑的代码。另一方面,Window Builder Pro与NetBeans的GUI构建器的代码相同,但代码较少,但实际上允许您编辑它生成的代码。
这种方法:
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);
}
}
}
用在this GUI:
产地:
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]
为什么不使用javaFX来扩展用于java桌面应用程序的UI。 –
我从来没有使用javaFX。有一些扩展JPanel的自定义组件。我更习惯于在android上工作,但这是一个桌面应用程序。 –
我没有使用intellij,但在netbeans中,有两个文件1窗体文件对应于每个用户界面。你可以双击UI并浏览代码(例如按钮)。 –