根据
JTextField
文档,您可以设置“列”中描述的字段的宽度,但找不到“列”的定义。
此外,做这样的事情:
new JTextField("abc", 3);
结果会出现一个宽度文本字段,其中填充了字符串
abc
,然后填充了额外的空格。
有人可以澄清
JTextField
构造函数中使用的列的定义吗?
如果您使用标准
JTextField
,则列将组件的首选宽度指定为 getColumnWidth()
的某个倍数。
方法
getColumnWidth()
定义每列的宽度(以像素为单位)。文档指出:“默认情况下,这被定义为所使用字体的字符‘m’的宽度。”
如果布局管理器修改文本字段,则它可能会以不同的大小显示。
JTextField 的 columns 属性用于确定对象的首选宽度。如果像示例中那样提供了初始字符串
new JTextField("abc", 3);
,则该字段将被绘制以匹配文本大小。否则,这些列允许在 JTextField
本身内并行堆叠文本。因此,在示例中 "abc"
之后出现空格的原因是因为它默认将字符串放置在第一列中,然后是两列空格。
感谢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”的数量。