Java中属性页的布局

Java中属性页的布局,java,layout-manager,Java,Layout Manager,是否有一种简单的方法可以以类似于属性页的方式在面板中布局组件?其中,每个特性或设置在面板的左侧有一个标签,在面板的右侧有一个编辑器组件。理想情况下,标签应该左对齐,编辑器应该右对齐。编辑器左侧位置应从最大标签宽度加上间隙开始。所有编辑器都可能具有相同的宽度 目前,我只能使用Netbeans designer,使用与生成的代码中的组布局相对应的免费设计来实现这一点。即使这样,我还是使用设计器来设置位置和大小。公平地说,生成的代码真是太难看了 生成代码 现在请记住,我想在代码中实现这一点,而不是在N

是否有一种简单的方法可以以类似于属性页的方式在面板中布局组件?其中,每个特性或设置在面板的左侧有一个标签,在面板的右侧有一个编辑器组件。理想情况下,标签应该左对齐,编辑器应该右对齐。编辑器左侧位置应从最大标签宽度加上间隙开始。所有编辑器都可能具有相同的宽度

目前,我只能使用Netbeans designer,使用与生成的代码中的组布局相对应的免费设计来实现这一点。即使这样,我还是使用设计器来设置位置和大小。公平地说,生成的代码真是太难看了

生成代码

现在请记住,我想在代码中实现这一点,而不是在Netbeans designer中,我还想添加许多组件

我不认为有2列和X行的网格布局会在面板中间分割成2列。因此,如果所有标签都不是太大,那么标签本身和编辑器之间就会出现巨大的差距

欢迎提供任何提示、窍门和技巧。我正在考虑写我自己的布局管理器来实现这一点


尽管编写一个并在Netbeans设计器中使用它会很好。但是这有点越界了。

您想要为组件的外观设置的要求越多,您需要编写的代码就越复杂

如果GridLayout的行为不符合您的要求,则GridBagLayout会。不过,我担心,当您实现GridBagLayout时,您的代码看起来不会比这里的示例更好

我会坚持使用现有的布局,而忽略Netbeans designer生成的丑陋代码。不管怎样,您都不必搞乱它,因为所有的编辑都是以图形方式进行的

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(10, 10, 10)
            .addComponent(jLabel1)
            .addGap(18, 18, 18)
            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(199, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(11, 11, 11)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel1)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(275, 275, 275))
    );