Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在给定字符数的情况下,如何查找JTextField的宽度?_Java_User Interface_Swing - Fatal编程技术网

Java 在给定字符数的情况下,如何查找JTextField的宽度?

Java 在给定字符数的情况下,如何查找JTextField的宽度?,java,user-interface,swing,Java,User Interface,Swing,我有一个JTextField,它可以接受固定数量的字符(例如10个字符)。我想限制文本字段的宽度,使其正好包含这么多字符。那么,给定字符的数量,有没有一种方法可以确定它所需要的宽度(像素)?假设我们知道字体。这将获得确切的宽度,尽管您需要一些额外的填充像素以使其美观 myJTextField.getFontMetrics(myFont).stringWidth(myString); 这种方法只适用于非比例字体。否则,您必须在字符集中找到“最大”的字符,以使框足够宽,可以容纳10个这种类型的字符

我有一个JTextField,它可以接受固定数量的字符(例如10个字符)。我想限制文本字段的宽度,使其正好包含这么多字符。那么,给定字符的数量,有没有一种方法可以确定它所需要的宽度(像素)?假设我们知道字体。

这将获得确切的宽度,尽管您需要一些额外的填充像素以使其美观

myJTextField.getFontMetrics(myFont).stringWidth(myString);

这种方法只适用于非比例字体。否则,您必须在字符集中找到“最大”的字符,以使框足够宽,可以容纳10个这种类型的字符

一种实用的方法是“猜测”一个宽字符并计算宽度,这样您就可以很好地预测文本字段是否足够大,以便进行常规输入。调整示例代码:

myJTextField.getFontMetrics(myFont).stringWidth("wwwwwwwwww);
用户界面将自动调整文本字段的大小。我相信它实际上使用了一个“W”作为大小字符,所以在大多数情况下它会比你需要的大。如果希望宽度精确,请使用单间距字体

JTextField textField = new JTextField(10);