如何获得Label,Button,TextArea或TextBox字符的总水平宽度?

时间:2010-02-22 06:36:06

标签: javascript html css gwt

Label,Button,TextArea和TextBox(从现在开始缩写为LBTT)能够显示文本字符串。有没有办法查看已经大小的LBTT对象,并确定可能适合给定对象的每一行的字符数。

例如,让我们说我有一个固定在其宽度的textArea。有没有办法询问这个textArea对象可以水平保存多少个字符?从概念上讲,类似于.getHorizo​​ntalCharacterWidth()方法?

这是我的“视觉”ascii标签示例。 “ - ”和“|”应该分别代表Label的垂直和水平边缘。

 -------
|       |
|ABCDEFG|
|       |
 -------

如您所见,此标签每条水平线最多可容纳7个字符(在本例中为A-G)?所以,如果你在这个Label上调用我想象的.getHorizo​​ntalCharacterWidth(),它将返回7.问题是,你将如何实现.getHorizo​​ntalCharacterWidth()?

假设我使用固定宽度的字体。

谢谢

3 个答案:

答案 0 :(得分:3)

是的,假设您说文本区域使用等宽字体,aTextArea.getCharacterWidth()应该给出水平可用的字符数。虽然它只返回html属性cols,它返回浏览器默认宽度(或者使用aTextArea.setCharacterWidth()设置它的任何内容)忽略CSS指定的宽度。

虽然如果您知道像素的字体大小,您可以通过将像素宽度除以像素字体大小来粗略估计可见的字符数。请注意,这可能会因字体的字符高度/比例而有所不同,并且某些浏览器会返回宽度,包括或排除滚动条(如果存在)。

答案 1 :(得分:0)

在两种情况下,这已经以普通的html属性形式存在。

文字区域:

<textarea name="" cols="10" rows=""></textarea>

文字输入:

<input name="" type="text" size="10" />

更一般的案例,标签和按钮更难。例如,'i'字符比'm'窄得多。如果将使用限制为等宽字体,则会更容易,但这可能不是您想要的。

答案 2 :(得分:0)

我假设您希望以文本区域或类似控件中的某种智能方式包装文本。

我前一段时间问similar question,基本上无法确定宽度。

您唯一的解决方案是使用可用的HTML属性或假设每个字符具有相同的平均宽度,并使用一些缓冲区进行计算。