JavaFX控制器未获取内容
我刚开始在JavaFX中使用控制器,我遇到了麻烦。我的第一个场景加载得很好,但是当我点击按钮移动到第二个场景时,什么都没有出现,只是一个空白框。关于如何加载我的第二个场景有什么线索吗 以下是我的开场白:JavaFX控制器未获取内容,java,javafx,Java,Javafx,我刚开始在JavaFX中使用控制器,我遇到了麻烦。我的第一个场景加载得很好,但是当我点击按钮移动到第二个场景时,什么都没有出现,只是一个空白框。关于如何加载我的第二个场景有什么线索吗 以下是我的开场白: public class ControllerConnect implements Controller{ private final FlowPane root; public ControllerConnect() { //Connection page ob
public class ControllerConnect implements Controller{
private final FlowPane root;
public ControllerConnect() {
//Connection page objects
TextField username = new TextField();
TextField password = new TextField();
username.setAlignment(Pos.CENTER);
password.setAlignment(Pos.CENTER);
Button connect = new Button("Connect");
connect.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
String URL = "jdbc:mysql://localhost:3306/world";
String name = username.getText();
String pass = password.getText();
try {
Connection conn = DriverManager.getConnection(URL, name, pass);
} catch (SQLException e1) {
e1.printStackTrace();
}
ControllerCity controller2 = new ControllerCity();
connect.getScene().setRoot(controller2.getContent());
}
});
root = new FlowPane(connect);
Label user = new Label("Username:");
Label pass = new Label("Password:");
user.setAlignment(Pos.CENTER);
pass.setAlignment(Pos.CENTER);
username.setAlignment(Pos.CENTER);
password.setAlignment(Pos.CENTER);
connect.setAlignment(Pos.CENTER);
VBox connectionBox = new VBox(10, user, username, pass, password, connect);
connectionBox.setAlignment(Pos.CENTER);
root.getChildren().addAll(connectionBox);
root.setMinSize(640, 480);
root.setAlignment(Pos.CENTER);
}
@Override
public Parent getContent() {
return root;
}
}
应用程序类别:
public void start(Stage primaryStage) throws Exception {
ControllerConnect controllerconnect = new ControllerConnect();
Scene scene = new Scene(
controllerconnect.getContent()
);
primaryStage.setScene(scene);
primaryStage.show();
}
按钮存在:你就是看不见 问题在于,您的第一个“控制器”(当然是视图,而不是控制器)将最小大小设置为
640x480
像素。场景的大小将调整为根的首选大小,在这种情况下,根的大小将为640 x 480
(因为第一个场景中的控件不需要比此更多的空间)
第二个场景的最小大小设置为1024 x 768
。因此,第二个视图现在比包含它的舞台大,并且按钮不在视图中
如果在按下“连接”按钮后展开窗口,您将看到这些按钮
如果你更换
ControllerCity controller2 = new ControllerCity();
connect.getScene().setRoot(controller2.getContent());
在按钮的事件处理程序中
ControllerCity controller2 = new ControllerCity();
Scene scene = connect.getScene();
scene.setRoot(controller2.getContent());
scene.getWindow().sizeToScene();
然后窗口将调整大小,以便您可以看到按钮。按钮存在:您就是看不到它们 问题在于,您的第一个“控制器”(当然是视图,而不是控制器)将最小大小设置为
640x480
像素。场景的大小将调整为根的首选大小,在这种情况下,根的大小将为640 x 480
(因为第一个场景中的控件不需要比此更多的空间)
第二个场景的最小大小设置为1024 x 768
。因此,第二个视图现在比包含它的舞台大,并且按钮不在视图中
如果在按下“连接”按钮后展开窗口,您将看到这些按钮
如果你更换
ControllerCity controller2 = new ControllerCity();
connect.getScene().setRoot(controller2.getContent());
在按钮的事件处理程序中
ControllerCity controller2 = new ControllerCity();
Scene scene = connect.getScene();
scene.setRoot(controller2.getContent());
scene.getWindow().sizeToScene();
然后窗口将调整大小,以便您可以看到按钮。@Yahya为什么不呢?我删除了决赛,但这并没有解决问题。这些看起来更像视图,而不是控制器。可以显示应用程序类吗?我假设您只是在创建一个场景,将其根设置为
new ControllerConnect().getContent()
,等等。大概没有例外?将其添加到question@Yahya为什么不呢?我删除了决赛,但这并没有解决问题。这些看起来更像视图而不是控制器。可以显示应用程序类吗?我假设您只是在创建一个场景,将其根设置为new ControllerConnect().getContent()
,等等。大概没有例外?将其添加到问题中