【发布时间】:2014-01-12 14:34:14
【问题描述】:
我正在使用 SWING 为 UI 创建一个 Java 应用程序。 我对 LayoutManager 的选择是 GroupLayout,但现在我遇到了一个组件问题。
基本布局由三列两行组成(有嵌套的行,如下面的代码所示),第二行仅包含一个带有 JCheckBox 列表的 JPane。
我的问题是我想以跨列的方式插入 JPanel,而不影响其他列的大小(即 Canvas 必须是正方形而不是矩形)。
有可能还是我必须更改 LayoutManager?
代码如下:
//create and set LayoutManager
GroupLayout gp = new GroupLayout(this.getContentPane());
gp.setAutoCreateContainerGaps(true);
gp.setAutoCreateGaps(true);
this.setLayout(gp);
//set alignment criteria
GroupLayout.Alignment hAlign = GroupLayout.Alignment.TRAILING;
GroupLayout.Alignment vAlign = GroupLayout.Alignment.BASELINE;
//add component into layout
//set horizontal group
gp.setHorizontalGroup(gp.createSequentialGroup()
.addGroup(gp.createParallelGroup(hAlign)
.addComponent(imageCanvas)
.addComponent(densitiesPanel))
.addGroup(gp.createParallelGroup(hAlign)
.addComponent(projectPathField)
.addComponent(sourceDensityLabel)
.addComponent(sourceSizeLabel))
.addGroup(gp.createParallelGroup(hAlign)
.addComponent(projectPathButton)
.addComponent(sourceDensityComboBox)
.addComponent(sourceSizeTextField))
);
//set vertical group
gp.setVerticalGroup(gp.createSequentialGroup()
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(imageCanvas)
.addGroup(gp.createSequentialGroup()
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(projectPathField)
.addComponent(projectPathButton))
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(sourceDensityLabel)
.addComponent(sourceDensityComboBox))
.addGroup(gp.createParallelGroup(vAlign)
.addComponent(sourceSizeLabel)
.addComponent(sourceSizeTextField)))
)
.addComponent(densitiesPanel)
);
【问题讨论】:
标签: java swing layout-manager grouplayout