调用继承的最终方法产生 "cannot find symbol" 错误

To call inherited final method produce "cannot find symbol" error

我有这个代码:

import javafx.scene.control.TextArea;
import javafx.event.EventHandler;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.KeyCode;
import javafx.scene.Node;

public class InitialTextFixedArea extends TextArea{
    public InitialTextFixedArea(String testoIniziale){
        super(testoIniziale);
        EventHandler<KeyEvent> eventHandler = new EventHandler<KeyEvent>(){
            @Override
            public void handle(KeyEvent e){
                if((e.getEventType() == KeyEvent.KEY_PRESSED & this.getCaretPosition() < 5)
                    |(this.getCaretPosition() == 5 & e.getCode() == KeyCode.BACK_SPACE)){
                    this.setEditable(false);
                }else{ 
                    this.setEditable(true);
                }
            }
        };
        this.addEventFilter(KeyEvent.KEY_PRESSED, eventHandler);
        this.addEventFilter(KeyEvent.KEY_RELEASED, eventHandler);
    }
}

并且当我尝试编译时,我得到了多个 "cannot find symbol" 类型的错误,其中符号是 getCaretPosition()setEditable() 方法。 我不是从 TextArea 继承了这些方法,而是从 TextInputControl 继承了这些方法吗?

感谢您的回答!

this 在此上下文中指向没有这些方法的 EventHandler。将其更改为 InitialTextFixedArea.this.getCaretPosition() 或只是 getCaretPosition().

您正在从 EventHandler 中调用 this.getCaretPosition()。在这种情况下,this 引用事件处理程序而不是 TextArea。
尝试在没有 this.

的情况下调用它