如何使用BorderLayout(Java)扩展JTextField

时间:2009-02-27 14:32:45

标签: java swing

我有一个Java程序,其中,我正在使用JTextField,但如果我没有指定默认大小,它将具有宽度0.我将它插入BorderLayout,那么怎么做我让它扩展以填满整个容器?<​​/ p>

4 个答案:

答案 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);
    }
}