【发布时间】:2016-01-02 15:02:58
【问题描述】:
我正在尝试限制可以在 JavaFX-8 文本字段中插入的字符数:达到限制时会调用 endLineReached() 方法。 我想根据文本字段的大小(GUI 上的可见部分)设置最大字符数。所以我使用的代码是
textfield.textProperty().addListener((ov, oldValue, newValue) -> {
onEndLine(textfield.getText(), textfield.getPrefColumnCount());
});
public void onEndLine(String text, int prefColumnCount) {
if (text.length() > prefColumnCount) {
endLineReached();
}
}
问题是 textfield.getPrefColumnCount() 不能正常工作。此外,我无法以编程方式设置 prefColumnCount 值,因为每次重新启动程序时(而不是在执行期间),文本字段的宽度都可能发生变化。文本字段是 JavaFX HBox 的子项。
【问题讨论】:
-
通常
TextField使用可变宽度字体,因此可见字符数取决于实际键入的字符。因此,我认为您所说的问题(“根据大小设置最大字符数”)格式不正确。你到底想做什么?防止文本水平滚动? -
是的,我试图阻止文本滚动。可能存在比处理 Textfield 中的字符数更好的方法来解决此问题:有没有办法在 TextField 上使用特定的侦听器?