Java中属性页面的布局

问题描述:

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

目前,我只能使用Netbeans设计器使用与生成的代码中的组布局相对应的“Free design”来执行此操作。即使那时我正在使用设计器来设置位置和大小。为了公平起见,生成的代码非常糟糕。

生成的代码

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)) 
    ); 

现在记住,我想这样做的代码 - 而不是在Netbeans的设计师,我也想加入许多组件。

我不认为具有2列和x行的网格布局会将其切割为总是在面板中间分成2列。因此,如果所有标签都不太大,它与编辑之间就会出现巨大的差距。

任何提示,技巧,黑客都欢迎。我正在考虑编写我自己的布局管理器来做到这一点。

尽管在Netbeans设计器中编写并使用它会很好。但那是一点点跳枪。

您希望为组件外观设置的要求越高,为了达到目标,您需要编写的代码越复杂。

如果GridLayout不符合您的喜好,那么GridBagLayout会。但是,我担心,当你实现一个GridBagLayout时,你的代码看起来不会比你在这里作为例子好得多。

我会坚持现有的布局,并忽略由Netbeans设计师生成的“丑陋”代码。无论如何,您不必乱用它,因为您可以用图形方式进行所有编辑。