繁体   English   中英

如何使用BorderLayout(Java)扩展JTextField

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM