如何在Java Swing中控制JTextFields的宽度?

前端之家收集整理的这篇文章主要介绍了如何在Java Swing中控制JTextFields的宽度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在单个行上有几个JTextField,但是我不希望它们具有相同的宽度.如何控制宽度并使其中的一些比其他宽度更宽?我想要他们一起占据总宽度的100%,所以如果我可以使用某种方式,这将是很好的.

我已经尝试过.setColumns(),但没有任何意义.

这里是一个例子,我使用三行,三行应显示为列:

import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class RowTest extends JPanel {

    class Row extends JComponent {
        public Row(String str1,String str2,String str3) {
            this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));

            JTextField fld1 = new JTextField(str1);
            JTextField fld2 = new JTextField(str2);
            JTextField fld3 = new JTextField(str3);

            fld1.setColumns(5); // makes no sense

            this.add(fld1);
            this.add(fld2);
            this.add(fld3);
        }
    }

    public RowTest() {
    this.setLayout(new GridLayout(5,0));

    this.add(new Row("Short","A long text that takes up more space","Short again"));
    this.add(new Row("Longer but short","Another long string","Short"));
    this.add(new Row("Hello","The long field again","Some info"));
    }

    public static void main(String[] args) {
        new JFrame() {{ this.getContentPane().add(new RowTest());
                            this.pack(); this.setVisible(true); }};
    }

}

解决方法

所有Swing组件都有一个优选的尺寸.文本组件的首选大小基于组件的文本.因此,通常该组件以其优选尺寸涂漆.

所以我看不到你的代码段的问题.每个文本字段应该有不同的首选大小.此外,当框架调整大小时,宽度将被调整,因为BoxLayout将尝试将每个组件的大小调整到最大/最小大小.

如果您需要更多的帮助,您可以发布您的SSCCE实际演示您遇到的大小问题.

编辑:

根据最新的要求,您可以使用Relative Layout.

猜你在找的Java相关文章