得到JFoenix Dialog的回复

时间:2016-11-15 13:11:31

标签: javafx

我在新的JavaFX应用程序中使用JFoenix。我已经成功创建了自己的消息对话框。

Dialog.OK_Message  message = 
new Dialog.OK_Message((StackPane)app_setup.getParent(),
                "Message", 
                "Changes will be affected after restart.");
    message.ShowDialog();

现在我可以在任何地方调用我的对话框:像这样:

Declare @Request XML = null
If @Request IS NULL 
BEGIN
    SET @Request = '
                    <Request>  
                       <ProductRequest>
                    <ProductName>testing &</ProductName>
                      </ProductRequest>
                     </Request>'
END 

select @Request.value ('(//ProductName)[1]','nvarchar(100)') 

我找不到一种方法来检测使用是否点击了按钮。或者用户按下了什么键。如果用户点击了OK按钮,我想做点什么。或者,如果使用按下某些键,我想做一些其他的事情?我该如何收听上述对话框?

1 个答案:

答案 0 :(得分:0)

您可以在 OK_Message 类中使用setOnKeyPressed,就像您在课堂上使用的一样,因为它正在扩展JFXDialog。

message.setOnKeyPressed(new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent event) {
        System.out.println(event.getCode().getName());
    }
});

为了聆听单击哪个按钮,为什么不为 OK_Message 类创建customEventListener?

OK_Message.java 文件中,在类之外创建一个接口,如;

interface OnEventListener {
    void onButtonCliked(String id);
}

并将 OK_Message 类的新方法添加为

public void setOnEventListener(OnEventListener listener) {
    mOnEventListener = listener;
}

首先 让我们将您的getButton()方法更改为此方法,以添加创建具有不同ID和文本的多个按钮的功能。

private JFXButton getButton(String id,String text){
    JFXButton btn = new JFXButton(text);
    btn.setId(id);
    btn.setButtonType(JFXButton.ButtonType.FLAT);
    btn.setPrefWidth(50);
    btn.setTextFill(Color.WHITE);
    btn.setOnAction((ActionEvent event) -> {
        mOnEventListener.onButtonCliked(btn.getId()); //Here we are firing the event
        CloseDialog();
    });
    btn.setStyle("-fx-background-color:red");
    return btn;
}

getDialogContent()中,我们可以创建多个按钮。

Content.setActions(getButton("Button1","OK"),getButton("Button2","CANCEL"));

现在,您可以在声明新的 OK_Message 对象后使用侦听器

OK_Message  message = 
    new OK_Message((StackPane)stackpane,
                        "Message",
                        "Changes will be affected after restart.");
message.ShowDialog();
message.setOnKeyPressed(new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent event) {
        System.out.println(event.getCode().getName());
    }
});
message.setOnEventListener(new OnEventListener() {
    @Override
    public void onButtonCliked(String id) {
        System.out.println(id);
    }
});

根据onButtonClicked()函数观察到的id确定要执行的操作。