来自 KeyEvent 的 Javafx getSource()

Javafx getSource() from KeyEvent

我正在尝试获取我的 KeyEvent 的来源(在我的例子中是一个 TextField)。我可以使用 e.getSource().toString() 来打印它,它打印字符串 TextField[id=molarMass, styleClass=text-input text-field] 但我只想得到 TextFieldID 所以我也可以将我的方法用于其他 TextFields 而不仅仅是这个。

代码:

public void correctTextField(KeyEvent e) {
    System.out.println(e.getSource().toString());
    if (e.getCode() != KeyCode.BACK_SPACE && !e.getCode().isArrowKey()) {
        int caretPosition = molarMass.getCaretPosition();
         molarMass.setText(DataUse.testForOnlyNumbers(molarMass.getText()));
        molarMass.positionCaret(caretPosition);
    }
}

correctTextField 每次按下一个键时都会被 TextField 使用,我想使用特定的 TextFieldID 而不是在代码

中使用 molarMass

您可以将源转换为节点并从那里获取 ID。

例如:

Node n = (Node)event.getSource();
String id = n.getId();

//Do your logic....

或者,如果您确定它只会是那样的话,您可以转换为 TextField....