JTextField 的“列”宽度是多少?

问题描述 投票:0回答:3

根据

JTextField
文档,您可以设置“列”中描述的字段的宽度,但找不到“列”的定义。

此外,做这样的事情:

new JTextField("abc", 3);

结果会出现一个宽度文本字段,其中填充了字符串

abc
,然后填充了额外的空格。

有人可以澄清

JTextField
构造函数中使用的列的定义吗?

java jtextfield swingx
3个回答
4
投票

如果您使用标准

JTextField
,则列将组件的首选宽度指定为
getColumnWidth()
的某个倍数。

方法

getColumnWidth()
定义每列的宽度(以像素为单位)。文档指出:“默认情况下,这被定义为所使用字体的字符‘m’的宽度。”

如果布局管理器修改文本字段,则它可能会以不同的大小显示。


1
投票

JTextField 的 columns 属性用于确定对象的首选宽度。如果像示例中那样提供了初始字符串

new JTextField("abc", 3);
,则该字段将被绘制以匹配文本大小。否则,这些列允许在
JTextField
本身内并行堆叠文本。因此,在示例中
"abc"
之后出现空格的原因是因为它默认将字符串放置在第一列中,然后是两列空格。


0
投票

感谢Enwired的回答。这困扰了我一段时间。 为了进一步阐述Enwired的答案,它是JTextField可以在屏幕(面板或窗口)上显示的m数。

观察结果

new JTextField("mmm", 3);   // this 3 is number of 'm' that we allow to fit in, please note that 'mmm' and 'abc' widths are different even though they are same character count, that is 3

对于上面的代码,它将显示一个宽度为 3 m 的 JTextField。 (我们可以在此 JTextField 上输入更多 m,但在 TextField 上仅显示 3m)

如果我们在此输入“abc”,文本字段上仍然有剩余空间,我们可以在其中容纳另一个字符,如下所示,

所以结论似乎不是我们可以放入 JTextField 的字符数,而是我们可以放入的“m”的数量。

© www.soinside.com 2019 - 2024. All rights reserved.