我使用Swing构建了一个非常复杂的GUI,并且遇到了我需要帮助的对齐问题。下面的代码是我所拥有的情况的简化版本,以便使问题更加清晰。
基本上我想知道有可能将JComponent与具有不同父组件的JComponent对齐吗?我知道我可以插入隐形Box组件来解决这个问题,但我认为这不是一个好的解决方案,原因有几个。
在下面的代码中,我希望Child具有相同的大小并与Niece垂直对齐(基本上Child与Niece处于相同的位置,只是在它下面的一行中)。姐姐的下面应该是空的空间。
是否有某种方法可以使Niece的左对齐相对于主内容窗格,并将Child的左对齐设置为相同?
代码:
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import java.awt.Container;
import javax.swing.JComponent;
import javax.swing.GroupLayout;
import javax.swing.JTextField;
import java.awt.Dimension;
public class Test extends JFrame {
public static void main(String args[]) {
new Test();
}
public Test() {
JTabbedPane tabPane = new JTabbedPane();
JTextField edPane1 = new JTextField("Sister");
JTextField edPane2 = new JTextField("Child");
JTextField tabEdPane = new JTextField("Niece");
edPane1.setPreferredSize(new Dimension(300, 100));
edPane2.setPreferredSize(new Dimension(300, 100));
tabEdPane.setPreferredSize(new Dimension(300, 100));
tabPane.addTab("Tab", tabEdPane);
Container contPane = getContentPane();
GroupLayout layout = new GroupLayout(contPane);
setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(
layout.createParallelGroup()
.addGroup(layout.createSequentialGroup()
.addComponent(edPane1)
.addComponent(tabPane))
.addComponent(edPane2)
);
layout.setVerticalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(edPane1)
.addComponent(tabPane))
.addComponent(edPane2)
);
setTitle("Title");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
任何解决方案的建议都可能有所帮助!
编辑:这应该是它的样子: