gpt4 book ai didi

java - 从自定义 DialogBox 类检索输入

转载 作者:行者123 更新时间:2023-12-01 13:51:32 25 4
gpt4 key购买 nike

我有一个 Navigator 类和一个继承自 GridPane 的自定义 DialogBox 类。

    public DialogBox(final JDialog jdialog) {
Label lblKeyName = new Label("Enter New Key");
Label lblKeyType = new Label("Select Key Type");
TextField txtKeyName = new TextField();
ComboBox cboKeyType = new ComboBox();
txtKeyName.getText();
Button btnOk = new Button("OK");
Button btnCancel = new Button("Cancel");

btnOk.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//TODO: Somehow return the values in the ComboBox and TextField
}
});

btnCancel.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
jdialog.setVisible(false);
}
});

txtKeyName.prefWidth(300);
cboKeyType.prefWidth(300);

this.add(lblKeyName, 0, 0);
this.add(lblKeyType, 0, 1);
this.add(txtKeyName, 1, 0);
this.add(cboKeyType, 1, 1);
this.add(btnOk, 0, 2);
this.add(btnCancel, 1, 2);
}

这是我的对话框的构造函数。

    JFXPanel fxPanel = new JFXPanel();
testBox = new DialogBox(jdialog);
fxPanel.setScene(new Scene(testBox));
jdialog.add(fxPanel);
jdialog.setVisible(true);

如何检索 TextField 和 ComboBox 中的值?我可以稍微回想起很久以前的一个类,其中教授提到了一种技术,涉及调用类(在本例中为 Navigator)实现一个接口(interface),然后将其自身传递给 DialogBox 类以检索值。不幸的是我没有找到任何东西,也不记得它是如何完成的。

最佳答案

假设对话框是模态的,基本上,一旦按下 btnOkbtnCancel 按钮,您需要更改某种状态标志,您可以询问该状态标志以确定如何对话框已关闭...

// This will also handle the use case where the user presses the "x" button...
private boolean wasCancelled = true;

//...

public boolean wasCancelled() {
return wasCancelled;
}

在操作监听器中,您需要适本地设置状态。

btnOk.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
wasCancelled = false;
jdialog.setVisible(false);
}
});

btnCancel.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
wasCancelled = true;
jdialog.setVisible(false);
}
});

现在,一旦对话框返回,您需要检查此标志...

jdialog.add(fxPanel); 
jdialog.setVisible(true);
if (!jdialog.wasCancelled()) {
//...
}

然后您需要提供“getter”方法以允许调用者从对话框中提取值...

public String getKey() {
return txtKeyName.getText();
}

public String getType() {
return cboKeyType.getSelectionModel().getValue();
}

这意味着您需要创建这两个字段作为实例变量

关于java - 从自定义 DialogBox 类检索输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com