gpt4 book ai didi

javafx - 如何在关闭阶段之前从阶段返回值?

转载 作者:行者123 更新时间:2023-12-02 06:45:28 26 4
gpt4 key购买 nike

我有一个“主阶段”,我按一个按钮打开“第二阶段”,其中有一个表格,用户选择表格中的一项,然后单击“asignar”按钮(这只是一个确认)按钮),一旦点击,必须将表格中所选项目的代码返回到主阶段,并关闭第二阶段。

这是重要的代码。

我有一个 INT 变量,它必须采用函数的值:

codigo = controller.setVista(this, usuario, password);

“setVista”函数如下所示:

public int setVista(ListHorarios vista, String usuario, String password) {
this.vista = vista;
this.usuario = usuario;
this.password = password;
this.inicializarTabla();
this.actualizarTabla(0, "%");

btnSeleccionar.setOnAction(e -> {
asignarSeleccion();
Stage stage = (Stage) btnSeleccionar.getScene().getWindow();
stage.close();
});
return codigo_horario;
}

“asignarSeleccion”如下所示:

private void asignarSeleccion() {
final HorarioTableModelo aux_horario = getTablaSeleccionada();
posicion = datos.indexOf(aux_horario);
if (aux_horario != null) {
codigo_horario = aux_horario.getCodigo();
}
}

我的问题是,在阶段关闭之前我无法将“codigo_horario”值放入第一个变量“codigo”中,我缺少什么?

最佳答案

这是一个可能的例子。结构同in the answer in my comment .

第二个 Stage 通过“ Controller ”打开,该“ Controller ”存储即使在 Stage 关闭时也应返回的数据,并公开一个 getter 用于从外部世界检索值(value)。

import javafx.application.Application;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;


public class Main extends Application {

@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);

Button bSecondStage = new Button("Show second Stage");
bSecondStage.setOnAction(e -> {
WindowController wc = new WindowController();
wc.showStage();
System.out.println(wc.getData());
});

root.setCenter(bSecondStage);


primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
launch(args);
}

class WindowController {
private String data;

void showStage() {
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);

VBox root = new VBox();
Scene scene = new Scene(root);
TextField tf = new TextField();
Button submit = new Button("Submit");

submit.setOnAction(e -> {
data = tf.getText();
stage.close();
});

root.getChildren().addAll(tf, submit);
stage.setScene(scene);
stage.showAndWait();
}

String getData() {
return data;
}
}
}

关于javafx - 如何在关闭阶段之前从阶段返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40676656/

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