TextInputDialog将KeyEvent处理程序分配给编辑器

时间:2015-10-01 00:22:10

标签: java javafx

我想使用标准TextInputDialog让用户输入Price(美元价值),然后将其应用于TableView的所有选定行(转化后) )。

根据API,getEditor()的{​​{1}}方法会返回TextInputDialog中使用的TextField。当我尝试将Dialog处理程序分配给编辑器(KeyEvent)时,我在NetBeans中的TextField收到编译器错误:

tField.setOnKeyPressed

基本代码是:

"incomaptible types < anonymous EventHandler<java.awt.event.KeyEvent>> cannot be converted to EventHandler<?, super javafx.Scene.Input.KeyEvent>>
type argument T is a type-variable:
T extends Event declared in interface EventHandler.

我在其他地方有效使用的效用函数是:

    TextInputDialog dialog = new TextInputDialog();
    dialog.setTitle("Set PRICE per kg.");
    dialog.setContentText("Price per kg:");

    // Configure the EDITOR.
    TextField tField = dialog.getEditor();        
    tField.setOnKeyPressed(new EventHandler<KeyEvent>()
    {
        @Override
        public void handle(KeyEvent ke) 
        {
            String character = ke.getCharacter();
            String text = ke.getText();

            if ( !LM_Utility.isNumberKeyValid(text, character, 99.99) )
                ke.consume();                
        }
    });

1 个答案:

答案 0 :(得分:1)

查看编译错误,您使用的是Swing KeyEvent类型而不是JavaFX类型。只需修复您的导入。