Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 桌面应用程序中的布局_Java_Swing_Layout Manager - Fatal编程技术网

Java 桌面应用程序中的布局

Java 桌面应用程序中的布局,java,swing,layout-manager,Java,Swing,Layout Manager,我正在开发一个java桌面应用程序,其中包含许多具有不同和相同布局的面板。现在,当我想设置面板新布局时,我总是创建新布局。例如 JPanel panel = new JPanel(new GridLayout(0, 1)); 创建一些LayoutFactory并在此处创建我需要的所有布局,然后设置到面板的正确解决方案是什么?1)通过新建GridLayout(0,1)铺设JPanel应与BorderLayout.CENTER相同,或者可以使用BoxLayout,在这种情况下,您只需为整个JPan

我正在开发一个java桌面应用程序,其中包含许多具有不同和相同布局的面板。现在,当我想设置面板新布局时,我总是创建新布局。例如

JPanel panel = new JPanel(new GridLayout(0, 1));
创建一些
LayoutFactory
并在此处创建我需要的所有布局,然后设置到面板的正确解决方案是什么?

1)通过新建
GridLayout(0,1)
铺设JPanel应与
BorderLayout.CENTER
相同,或者可以使用
BoxLayout
,在这种情况下,您只需为整个
JPanel
放置一个
JComponent

2) 最简单的方法是通过
嵌套布局来放置
JComponents
,其中每个容器可以具有不同、相同的
LayoutManager
或它们的组合


3) 通过使用或可能(在大多数情况下)将每个
JComponents
一次放置在整个容器或
JPanel

hudi中,如果希望使代码更简洁,可以编写创建和分配布局的帮助器方法。如果仅在一个类中设置布局,则帮助器方法可以是该类的
private
方法。或者,如果要在各种类中设置布局,则可以将
受保护的
帮助程序方法添加到公共超类(如果有)中,或者作为实用程序类上的
静态
方法


发布代码的详细信息,我们可以提供更具体的建议。

不需要工厂(有些甚至无法共享),那么可以共享的布局又如何呢?例如,当我在我的项目中搜索flowLayout时,我发现我正在创建此布局的大约30个实例。这30个小对象(以及布局管理器都很小)是一个问题吗?#1
GridLayout(0,1)
BorderLayout.CENTER
不同。它定义了一个布局,其中包含一列和添加元素时相同数量的行。即使是
GridLayout(1,1)
在添加更多元素时也不会只有一个单元格,而是动态添加列
BoxLayout
具有不同的效果,它不会调整组件的大小#3 JGoodies FormLayout也是一个很好的选择。