gpt4 book ai didi

java - 在从 TextField (FXML) 扩展的自定义类中分配 boolean 值时出错

转载 作者:行者123 更新时间:2023-12-03 23:43:07 26 4
gpt4 key购买 nike

我开始学习 JavaFX 并遇到了这个问题:我有一个 TextBox 类 extends from 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" />

Caused by: javafx.fxml.LoadException: Error resolving onlyDigits='true', either the event handler is not in the Namespace or there is an error in the script.


但是在 maxLength 的情况下,一切正常

最佳答案

我认为这里发生的事情是,因为属性 onlyDigits以文字开头 "on" ,FXML 解析器假设它是一个事件处理程序属性。 (例如, onAction 。)所以它假设分配的值是 true , 指的是在 FXML 中的脚本中定义的函数。
(就其值(value)而言,我认为这是一个错误。)
更改属性的名称,例如至 useOnlyDigits通过更改方法的名称:

public void setUseOnlyDigits(boolean onlyDigits) {
this.onlyDigits = onlyDigits;
}

public boolean isUseOnlyDigits() {
return onlyDigits;
}
并相应地更新 FXML:
<TextBox
GridPane.columnIndex="0" GridPane.rowIndex="1"
maxLength="2"
useOnlyDigits="true"
fx:id="tbNumberVertex" />

关于java - 在从 TextField (FXML) 扩展的自定义类中分配 boolean 值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64569165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com