要调用继承的final方法产生"找不到符号"错误

时间:2017-11-14 23:13:17

标签: java inheritance cannot-find-symbol

我有这段代码:

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);
    }
}

当我尝试编译时,我获得了多个类型&#34的错误;找不到符号&#34;,其中符号是getCaretPosition()setEditable()方法。 我是否继承了从TextArea继承它们的TextInputControl中的这些方法?

感谢您的回答!

2 个答案:

答案 0 :(得分:0)

在此上下文中,

this指向EventHandler,它没有这些方法。将其更改为InitialTextFixedArea.this.getCaretPosition()或仅getCaretPosition()

答案 1 :(得分:0)

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