GroupLayout - простое позиционирование компонента
Я использую GridBagLayout
но повернулся к GroupLayout
относительно недавно. Ниже скриншот того, что у меня есть и что мне нужно. Тогда код.
Что мне нужно изменить?
Что я имею
Что мне нужно
Я думаю, что я должен использовать TRAILING
а также LEADING
константы, но графический интерфейс не отвечает. Может ли это быть причиной, по которой большинство ТАК советуют людям избегать 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();
}
}
1 ответ
Решение
Замените метод init следующим кодом: BTW: используйте NetBeans или Eclipse, чтобы нарисовать пользовательский интерфейс Swing. Это было бы намного проще, чем писать код самостоятельно.
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();