![](/img/trans.png)
[英]Making scrollRectToVisible work with a panel laid out with GroupLayout
[英]GroupLayout: components don't laid out as supposed to be?
应该像这样布置的组件:
(一种)
+ ------------------- +
| label1 textfield1 |
| label2 textfield2 |
| label3 textfield3 |
+ ------------------- +
但是他们现在看起来像什么:
(B)
+ ------------------------------------------------- -------- +
| label1 label2 label3 textfield1 textfield2 textfield3 |
+ ------------------------------------------------- -------- +
如何使它们看起来像( A )
SSCCE代码:
import java.awt.Dimension;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GroupLayoutTest extends JPanel
{
GroupLayout layout;
JTextField tf_id;
JTextField tf_name;
JTextField tf_price;
JLabel lb_id;
JLabel lb_name;
JLabel lb_price;
public GroupLayoutTest()
{
layout = new GroupLayout(this);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
lb_id = new JLabel("id");
lb_name = new JLabel("name");
lb_price = new JLabel("price");
tf_id = new JTextField(5);
tf_name = new JTextField(5);
tf_price = new JTextField(5);
createGUI();
}
private void createGUI()
{
layout.setHorizontalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(lb_id)
.addComponent(lb_name)
.addComponent(lb_price))
.addGroup(layout.createParallelGroup()
.addComponent(tf_id)
.addComponent(tf_name)
.addComponent(tf_price))
);
layout.setVerticalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(lb_id)
.addComponent(tf_id))
.addGroup(layout.createParallelGroup()
.addComponent(lb_name)
.addComponent(tf_name))
.addGroup(layout.createParallelGroup()
.addComponent(lb_price)
.addComponent(tf_price)
));
}
@Override
public Dimension getPreferredSize()
{
return new Dimension(400, 500);
}
public void creatAndShowGUI()
{
JFrame frame = new JFrame();
frame.add(this);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
GroupLayoutTest test = new GroupLayoutTest();
test.creatAndShowGUI();
}
});
}
}
您已正确设置布局,但是忘记将其添加到面板中。 因此,添加以下行: this.setLayout(layout);
在代码中的某个位置,它应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.