GroupLayout——简单的组件定位
GroupLayout - simple component positioning
我一直在使用 GridBagLayout
但最近转向 GroupLayout
。下面是我所拥有的和我需要的屏幕截图。然后是代码。
我需要更改什么?
我有什么
我需要的
我想我应该使用 TRAILING
和 LEADING
常量,但 GUI 没有响应。这可能是大多数 SO 建议人们避免 GroupLayout
的原因吗?之前一直在用GridBagLayout
,比较复杂,GroupLayout
代码好像简单多了。这就是我使用它的原因。下面给出了我的代码,我需要什么才能达到预期的效果?
public class GroupLayoutOne extends JFrame{
JLabel lbText = new JLabel("Text one");
JTextField txText = new JTextField();
JLabel lbText2 = new JLabel("Text two");
JTextField txText2 = new JTextField();
JPanel pnCompo = new JPanel();
public static void main(String[] args) {
GroupLayoutOne glx = new GroupLayoutOne();
glx.init();
glx.setVisible(true);
glx.setSize(new Dimension(400,200));
glx.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
GroupLayout gl = new GroupLayout(getContentPane());
this.getContentPane().setLayout(gl);
pnCompo.setPreferredSize(new Dimension(300,300));
pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
gl.setHorizontalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addComponent(lbText)
.addComponent(lbText2)
.addComponent(pnCompo)
)
.addGroup(gl.createParallelGroup()
.addComponent(txText)
.addComponent(txText2)
)
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addComponent(lbText)
.addComponent(txText)
)
.addGroup(gl.createParallelGroup()
.addComponent(lbText2)
.addComponent(txText2)
)
.addComponent(pnCompo)
);
pack();
}
}
用以下代码替换您的初始化方法:
顺便说一句:使用 NetBeans 或 Eclipse 绘制摆动 UI。比自己写代码容易多了。
GroupLayout gl = new GroupLayout(getContentPane());
this.getContentPane().setLayout(gl);
pnCompo.setPreferredSize(new Dimension(300,300));
pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
gl.setHorizontalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addGroup(gl.createSequentialGroup().addComponent(lbText)
.addComponent(txText))
.addGroup(gl.createParallelGroup()
.addGroup(gl.createSequentialGroup().addComponent(lbText2)
.addComponent(txText2))
.addComponent(pnCompo))
)
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addComponent(lbText)
.addComponent(txText))
.addGroup(gl.createParallelGroup().addComponent(lbText2)
.addComponent(txText2)
)
.addComponent(pnCompo)
);
pack();
我一直在使用 GridBagLayout
但最近转向 GroupLayout
。下面是我所拥有的和我需要的屏幕截图。然后是代码。
我需要更改什么?
我有什么
我需要的
我想我应该使用 TRAILING
和 LEADING
常量,但 GUI 没有响应。这可能是大多数 SO 建议人们避免 GroupLayout
的原因吗?之前一直在用GridBagLayout
,比较复杂,GroupLayout
代码好像简单多了。这就是我使用它的原因。下面给出了我的代码,我需要什么才能达到预期的效果?
public class GroupLayoutOne extends JFrame{
JLabel lbText = new JLabel("Text one");
JTextField txText = new JTextField();
JLabel lbText2 = new JLabel("Text two");
JTextField txText2 = new JTextField();
JPanel pnCompo = new JPanel();
public static void main(String[] args) {
GroupLayoutOne glx = new GroupLayoutOne();
glx.init();
glx.setVisible(true);
glx.setSize(new Dimension(400,200));
glx.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
GroupLayout gl = new GroupLayout(getContentPane());
this.getContentPane().setLayout(gl);
pnCompo.setPreferredSize(new Dimension(300,300));
pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
gl.setHorizontalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addComponent(lbText)
.addComponent(lbText2)
.addComponent(pnCompo)
)
.addGroup(gl.createParallelGroup()
.addComponent(txText)
.addComponent(txText2)
)
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addComponent(lbText)
.addComponent(txText)
)
.addGroup(gl.createParallelGroup()
.addComponent(lbText2)
.addComponent(txText2)
)
.addComponent(pnCompo)
);
pack();
}
}
用以下代码替换您的初始化方法: 顺便说一句:使用 NetBeans 或 Eclipse 绘制摆动 UI。比自己写代码容易多了。
GroupLayout gl = new GroupLayout(getContentPane());
this.getContentPane().setLayout(gl);
pnCompo.setPreferredSize(new Dimension(300,300));
pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
gl.setHorizontalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addGroup(gl.createSequentialGroup().addComponent(lbText)
.addComponent(txText))
.addGroup(gl.createParallelGroup()
.addGroup(gl.createSequentialGroup().addComponent(lbText2)
.addComponent(txText2))
.addComponent(pnCompo))
)
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addComponent(lbText)
.addComponent(txText))
.addGroup(gl.createParallelGroup().addComponent(lbText2)
.addComponent(txText2)
)
.addComponent(pnCompo)
);
pack();