Java 在Swing中添加组可移动水平位置

Java 在Swing中添加组可移动水平位置,java,forms,swing,Java,Forms,Swing,我正在尝试为一个控制台应用程序制作一个简单的Swing GUI,通常使用.NET,所以这对我来说很新鲜,我试图了解它是如何工作的 我有以下摇摆形式的水平设置: javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(

我正在尝试为一个控制台应用程序制作一个简单的Swing GUI,通常使用.NET,所以这对我来说很新鲜,我试图了解它是如何工作的

我有以下摇摆形式的水平设置:

 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(tempTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(celsiusLabel))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(convertButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(fahrenheitLabel)))
                    .addGroup(layout.createSequentialGroup()
                     .addComponent(importDDPathField)
                     .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                     .addComponent(importDDLabel))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
对于垂直布局,请执行以下操作:

layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {convertButton, tempTextField, importDDPathField});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(tempTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(celsiusLabel))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(convertButton)
                    .addComponent(fahrenheitLabel))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(importDDPathField)
                    .addComponent(importDDLabel))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
我看不出表单为什么要将最后一组添加到右侧,如下所示:


我以与前两组相同的方式添加了第三组,但位置不知怎么被偏移了,我不确定如何偏移。

在水平布局代码中,在
华氏标签
之后可能会有一个额外的
。这似乎阻止了导入文件小部件与其他小部件位于同一个并行组中。

GroupLayout
并不真正用于手工编码,通常很难更新/修改,只是saying@MadProgrammer是的,如果我打算用它来做一个项目,我会更认真地对待它,只是想要些又快又脏的东西