加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:34:27 所属栏目:Java 来源:网络整理
导读:我试图在单个行上有几个JTextField,但是我不希望它们具有相同的宽度.如何控制宽度并使其中的一些比其他宽度更宽?我想要他们一起占据总宽度的100%,所以如果我可以使用某种方式,这将是很好的. 我已经尝试过.setColumns(),但没有任何意义. 这里是一个例子,我
我试图在单个行上有几个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读