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

标签 java swing layout jtextfield layout-manager

我试图在一行中放置多个 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); }};
    }

}

最佳答案

yourTextField = new JTextField("", 20);

如果你这样启动它,它会将文本字段设置为空并有 20 个列

关于java - 如何在 Java Swing 中控制 JTextFields 的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897506/

相关文章:

java - Swing:从对话框的按钮中删除焦点边框

java - 向 JFrame 添加标签

python - 使用布局的绘图问题 - python

winforms - FlowLayoutPanel AutoSize 高度不起作用

java - 无法在服务器端处理基于 cometd 的线程

java - Java中如何匹配反斜杠?

Java反编译器怎么用?

java - 如何将助记符放在角色的第二个实例(Java-Swing)下?

java - ListView 不在较小的屏幕上显示项目

java - 如何确定哪个 android 小部件正在调用我的函数?