我开始学习JavaFX并遇到了这个问题:我有一个TextBox类是从TextField继承的
package sample;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;
public class TextBox extends TextField {
private int maxLength = 255;
private boolean onlyDigits;
public TextBox(){
super();
}
@Override
public void replaceText(int start,int end,String text) {
String oldText = getText();
super.replaceText(start,end,text);
if (!verify()){
setText(oldText);
}
}
@Override
public void replaceSelection(String text) {
String oldText = getText();
super.replaceSelection(text);
if (!verify()){
setText(oldText);
}
}
private boolean verify() {
String text = getText();
if (text =="")
return true;
if (text.length() > maxLength) {
return false;
}
if (onlyDigits && !Converter.StringToInt(text).isSuccess()){
return false;
}
return true;
}
public int getMaxLength() {
return maxLength;
}
public void setMaxLength(int maxLength) {
if (maxLength >= 0)
this.maxLength = maxLength;
}
public void setOnlyDigits(boolean onlyDigits) {
this.onlyDigits = onlyDigits;
}
public boolean isOnlyDigits() {
return onlyDigits;
}
}
使用以下FXML时,出现错误:
<TextBox
GridPane.columnIndex="0" GridPane.rowIndex="1"
maxLength="2"
onlyDigits="true"
fx:id="tbNumberVertex" />
由以下原因引起:javafx.fxml.LoadException:错误解决onlyDigits ='true',或者事件处理程序不在命名空间中,或者脚本中有错误。
但是在使用maxLength的情况下,一切正常