[英]How to make JTextField expand with a BorderLayout (Java)
我有一个Java程序,其中,我正在使用JTextField,但如果我没有指定默认大小,它将具有宽度0.我将它插入BorderLayout,所以我该如何制作它扩展以填充整个容器?
在上面的示例中,文本字段将正常工作。 但是,如果您插入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,您可以使用元素自动展开(使用权重)以适合整个容器。
填满整个容器? 使用BorderLayout?
container.add( jTextField, BorderLayout.CENTER );
就那么简单。
使用Swing编程时,关键是使用一个好的布局管理器。 对我来说,完美的布局管理器是MigLayout 。 这是满足所有布局需求的最佳一站式解决方案。 他们的网站提供了出色的文档和示例
它将自动填充到容器的宽度,示例如下:
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.