我在新的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按钮,我想做点什么。或者,如果使用按下某些键,我想做一些其他的事情?我该如何收听上述对话框?
答案 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确定要执行的操作。