javafx-2 – 如何在controller-class中的javafx应用程序中交换屏
发布时间:2020-12-14 05:19:55 所属栏目:Java 来源:网络整理
导读:嘿,我搜索了一段时间,但我找不到解决以下问题的方法: 在javafx中有3个基本文件;控制器类,fxml文件和应用程序类.现在我想在控制器中做出一个按钮点击(其工作得很好)并更改该点击屏幕(通常使用stage.setScreen()),但我没有参考舞台(你可以在应用程序类中找到)
嘿,我搜索了一段时间,但我找不到解决以下问题的方法:
在javafx中有3个基本文件;控制器类,fxml文件和应用程序类.现在我想在控制器中做出一个按钮点击(其工作得很好)并更改该点击屏幕(通常使用stage.setScreen()),但我没有参考舞台(你可以在应用程序类中找到). 应用程序示例: public class JavaFXApplication4 extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } /** * The main() method is ignored in correctly deployed JavaFX application. * main() serves only as fallback in case the application can not be * launched through deployment artifacts,e.g.,in IDEs with limited FX * support. NetBeans ignores main(). * * @param args the command line arguments */ public static void main(String[] args) { launch(args); } } FXML-样品: <?xml version="1.0" encoding="UTF-8"?> <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <AnchorPane id="AnchorPane" prefHeight="200.0" prefWidth="320.0" xmlns:fx="http://javafx.com/fxml" fx:controller="javafxapplication4.SampleController"> <children> <Button id="button" fx:id="nextScreen" layoutX="126.0" layoutY="90.0" onAction="#handleButtonAction" text="Next Screen" /> <Label fx:id="label" layoutX="126.0" layoutY="120.0" minHeight="16.0" minWidth="69.0" /> </children> </AnchorPane> 控制器 – 示例: public class SampleController implements Initializable { @FXML private Label label; @FXML private void handleButtonAction(ActionEvent event) { System.out.println("You clicked me!"); label.setText("Hello World!"); //Here I want to swap the screen! } @Override public void initialize(URL url,ResourceBundle rb) { // TODO } } 我会感谢任何一种帮助. 解决方法@FXML private void handleButtonAction(ActionEvent event) { System.out.println("You clicked me!"); label.setText("Hello World!"); //Here I want to swap the screen! Stage stageTheEventSourceNodeBelongs = (Stage) ((Node)event.getSource()).getScene().getWindow(); // OR Stage stageTheLabelBelongs = (Stage) label.getScene().getWindow(); // these two of them return the same stage // Swap screen stage.setScene(new Scene(new Pane())); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读