gpt4 book ai didi

在 Controller 之间传递值时出现 JavaFX LoadException

转载 作者:行者123 更新时间:2023-12-02 04:42:16 26 4
gpt4 key购买 nike

我尝试制作多用户登录表单,但是,我在将值从一个 Controller 传递到另一个 Controller 时遇到问题,而且我真的不知道发生了什么。

第一个 Controller

public class Controller implements Initializable{

public Pracownik pracownik = new Pracownik();

@FXML
private Label isConnected;

@FXML
private TextField txtUsername;

@FXML
private TextField txtPass;

private Connection conn;

// private ObservableList<Pracownik> lista = FXCollections.observableArrayList();

public void initialize(URL url, ResourceBundle rb){
conn = DBConnection.getConnection();

// lista = new Pracownik().getAll(conn);
}

public void login(ActionEvent event){
try {
if(pracownik.isLogin(conn, txtUsername.getText(), txtPass.getText()) ){

isConnected.setText("Correct");

if(pracownik.stanowisko(conn, txtUsername.getText(), txtPass.getText()) == 1){

Stage primarystage = new Stage();
FXMLLoader loader = new FXMLLoader();
Pane root = loader.load(getClass().getResource("/sample/BossView.fxml").openStream());
//BossController controller = (BossController) loader.getController();
Scene scene = new Scene(root);
primarystage.setScene(scene);
primarystage.show();
}
else {

Stage primarystage = new Stage();
FXMLLoader loader = new FXMLLoader();
Pane root = loader.load(getClass().getResource("/sample/EmployerView.fxml").openStream());
EmployerController controller = loader.getController();
controller.getUser(txtUsername.getText());


Scene scene = new Scene(root);
primarystage.setScene(scene);
primarystage.show();


}
}

else{
isConnected.setText("Błędne dane");
}
} catch (SQLException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}

}
}

还有我想传递 txtUserName 的第二个 Controller

package sample;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

import java.net.URL;
import java.util.ResourceBundle;

public class EmployerController implements Initializable {


String value;

public void setValue(String value) {
this.value = value;
}

@FXML
private static Label imie;

@FXML
private Label nazwisko;

@FXML
private Label mail;

@FXML
private Label numer;



@Override
public void initialize(URL url, ResourceBundle resourceBundle) {

imie.setText(value);

}

public void getUser(String user){

setValue(user);

}

}

尝试登录后出现此异常

javafx.fxml.LoadException: 
unknown path

我发现

 imie.setText(value);

导致此异常。没有它,一切都很好。

最佳答案

在雇主 Controller 的initialize方法中调用时,变量值仍然为null。在您的示例中,您可以像这样更改 getUser 方法:

public void getUser(String user){

setValue(user);
imie.setText(value);

}

此外,实际设置值的方法不应称为“get...”,并且将 Label 声明为静态很可能不是一个好主意。

关于在 Controller 之间传递值时出现 JavaFX LoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509855/

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