swing - 阻止 GroupLayout 组件垂直拉伸(stretch)

标签 swing grouplayout

有没有一种简单的方法可以让 GroupLayout 应用程序中的所有(或大部分)组件不垂直拉伸(stretch)?我知道我可以通过在添加时强制每个组件达到它的首选大小来做到这一点,但这会使代码更加冗长:

       .addGroup(layout.createSequentialGroup()
          .addComponent(oDevRadio)
          .addComponent(oInstRadio)
       )

成为

       .addGroup(layout.createSequentialGroup()
          .addComponent(oDevRadio,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
          .addComponent(oInstRadio,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
       )

有没有办法将其设置为默认值,并仅指定我希望可拉伸(stretch)的元素?

引用资料 - addComponent's spec

最佳答案

据我所知,告诉 GroupLayout 组件不要拉伸(stretch)或以其他方式错位的唯一方法要求相关组件位于 ParallelGroup 内。然后将 ParallelGroup 的可调整大小标志设置为 false 是一件简单的事情。

Javadoc of ParallelGroup creator with relevant flag

例如,在下面的代码中,jspCasts 是一个非常高大上的组件。如果没有将标志设置为 false 的新 ParallelGroup,它旁边的组件将拉伸(stretch)或不整齐对齐。

vGroup.addGroup(gl.createParallelGroup(Alignment.LEADING).
    addComponent(jspCasts).
    addGroup(gl.createParallelGroup(Alignment.CENTER, false).
      // without worrying about vertical stretching or misalignment, 
      // add your components here

关于swing - 阻止 GroupLayout 组件垂直拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577464/

相关文章:

当添加第二个 JPanel 时,Java CardLayout JPanel 向上移动

java - JComboBox 的问题

java - 我的计时器的逻辑错误在哪里,该计时器将镜头动画移动到帧的顶部?

java - 组布局中的 JLabel - 卡住大小

java - 为什么我的 JTextArea 会溢出 GroupLayout 中的框架?

java - Swing 布局对容器的依赖

java - JSplitPane 小边框但大抓取命中框

java - 使 JButton 中的文本不可见

java - 无法将 JScrollPane 添加到 GroupLayout 中的 JTextArea