java - 为什么我的文本字段不是我指定的大小?

标签 java user-interface

我不明白为什么我的 TextField 拒绝达到我要求的大小。我希望从你们那里得到一些见解。

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.TextField;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class HW09 extends JFrame{

    public HW09() {
        this.setVisible(true);
        this.setSize(455, 155);


        TextField cartonsPerShipmentBox = new TextField("5");
        cartonsPerShipmentBox.setMaximumSize(new Dimension(20, 20));
        Button calculateButton = new Button("Calculate!");

        JPanel middleContainer = new JPanel();
        middleContainer.setLayout(new GridLayout(2, 4));
        middleContainer.add(new JLabel("Cartons Per Shipment: "));

        //CARTON AMOUNT
        middleContainer.add(cartonsPerShipmentBox);

        //TOTAL BOX
        middleContainer.add(new JLabel("Total: "));




        middleContainer.add(new JLabel("Items per carton: "));

        //ITEMS PER CARTON BOX
        middleContainer.add(new Button("OOF"));

        //CALCULATE BUTTON
        middleContainer.add(calculateButton);

        this.add(middleContainer);


    }

    public static void main(String[] args) {

        HW09 hw = new HW09();

    }

}

我想要这个,因为即使我的项目采用网格布局,但 TextField 对于我想要的东西来说确实太大了,这使得程序看起来很奇怪。我希望文本字段非常小,正如我用尺寸(20, 20)表示的那样。但是,当我运行该程序时,它使 TextField 与其他所有项目的大小相同。

最佳答案

宽度未设置为您的首选宽度的原因是传递给 TextField 构造函数的整数参数(示例中的 5)表示字段中的列数。该数字与字段当前字体提供的指标一起使用来计算字段的首选宽度。它不限制用户可以输入的字符数。为此,您可以使用格式化文本字段或文档监听器。

尝试减小列宽。

关于java - 为什么我的文本字段不是我指定的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53699880/

相关文章:

java - 我应该使用 java.util.Random 的全局实例,还是每次使用它时都构造一个?

java - JTable 及其与数据源的关系

user-interface - 是否有可用于创意的优秀应用程序 UI 库?

swing - Clojure:窗口框架关闭时退出程序

javascript - Backbone.js 仅适用于单页应用程序吗?

java - 如何为 GridBagLayout 中的所有组件设置间隙?

java - 如何检索 Swing 表单值

Java 简单的圣诞树

java - 线程连接在 Android 中不起作用?

java - Mule HTTP 连接重置