我有一个Java程序,其中,我正在使用JTextField,但如果我没有指定默认大小,它将具有宽度0.我将它插入BorderLayout,那么怎么做我让它扩展以填满整个容器?</ p>
答案 0 :(得分:5)
在上面的示例中,文本字段可以正常工作。但是,如果您插入EAST或WEST,它将无效。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class TextFieldTest {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
JTextField tf = new JTextField();
f.getContentPane().add(BorderLayout.EAST, tf);
f.pack();
f.setVisible(true);
}
}
我的问题是:这需要是BorderLayout还是您可以使用其他布局管理器?如果可以,您应该检查GridBagLayout,您可以使用元素自动展开(使用重量)以适合整个容器。
答案 1 :(得分:2)
填满整个容器?使用BorderLayout?
container.add( jTextField, BorderLayout.CENTER );
这很简单。
答案 2 :(得分:1)
使用Swing编程时,关键是使用一个好的布局管理器。对我来说,完美的布局管理器是MigLayout。这是满足所有布局需求的最佳一站式解决方案。他们的网站提供了出色的文档和示例。
答案 3 :(得分:0)
它将自动填充到容器的宽度,如下所示:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class TextFieldTest {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
JTextField tf = new JTextField();
f.add(tf, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
}