我有这段代码:
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
中的这些方法?
感谢您的回答!
答案 0 :(得分:0)
this
指向EventHandler
,它没有这些方法。将其更改为InitialTextFixedArea.this.getCaretPosition()
或仅getCaretPosition()
。
答案 1 :(得分:0)
您正在从EventHandler中调用this.getCaretPosition()
。在这种情况下,this
引用事件处理程序而不是TextArea
尝试在没有this
的情况下调用它。