• JavaFx在Main中获取Controller初始化相关配置和Fxml


    Main中的方法

    package sample;
    
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    import java.net.URL;
    import javafx.fxml.JavaFXBuilderFactory;
    
    public class Main extends Application {
      
        @Override
        public void start(Stage primaryStage) throws Exception {
            URL location = getClass().getResource("sample.fxml");
            FXMLLoader fxmlLoader = new FXMLLoader();
            fxmlLoader.setLocation(location);
            fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
            Parent root = fxmlLoader.load();
            //如果使用 Parent root = FXMLLoader.load(...) 静态读取方法,无法获取到Controller的实例对象
            primaryStage.setTitle("Hello World");
            Scene scene = new Scene(root, 400, 500);
            //加载css样式
            //scene.getStylesheets().add(getClass().getResource("style1.css").toExternalForm());
            primaryStage.setScene(scene);
            Controller controller = fxmlLoader.getController();   //获取Controller的实例对象
            //Controller中写的初始化方法
            controller.Init();
            primaryStage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }

    Controller类:

    package sample;
    
    import javafx.collections.FXCollections;
    import javafx.fxml.FXML;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.ComboBox;
    import javafx.event.ActionEvent;
    import javafx.collections.ObservableList;
    
    public class Controller {
    
        @FXML
        private Button mButton;
        @FXML
        private Label mLabel;
        @FXML
        private ComboBox comboBox_API;
    
        Integer ClickCount=0;
    
    
        private ObservableList<String> apiList=FXCollections.observableArrayList();
        public void Init(){
            apiList.add("创建订单");
            apiList.add("获取订单信息");
            this.comboBox_API.setItems(apiList);
            this.mButton.setText("按钮1");
        }
    
        @FXML
        public void onButtonClick(ActionEvent event) {
            ClickCount++;
            mLabel.setText("HelloWorld"+ClickCount);
        }
    }

    Fxml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.geometry.Insets?>
    <?import javafx.scene.control.Button?>
    <?import javafx.scene.control.ComboBox?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.layout.ColumnConstraints?>
    <?import javafx.scene.layout.GridPane?>
    <?import javafx.scene.layout.RowConstraints?>
    <?import javafx.collections.ObservableList?>
    
    <GridPane alignment="center" hgap="10" prefHeight="400.0" prefWidth="500.0" vgap="10" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
       <columnConstraints>
           <ColumnConstraints prefWidth="60"/>
           <ColumnConstraints prefWidth="60" />
           <ColumnConstraints prefWidth="280"/>
       </columnConstraints>
       <rowConstraints>
           <RowConstraints prefHeight="40"/>
           <RowConstraints prefHeight="200" />
           <RowConstraints prefHeight="40" />
           <RowConstraints prefHeight="200" />
       </rowConstraints>
       <children>
           <Label layoutX="10" layoutY="10" text="API接口" GridPane.columnIndex="0" GridPane.rowIndex="0">
             <GridPane.margin>
                <Insets bottom="10.0" top="5.0" />
             </GridPane.margin>
           </Label>
           <ComboBox fx:id="comboBox_API" prefWidth="120" GridPane.columnIndex="1" GridPane.rowIndex="0">
             <GridPane.margin>
                <Insets bottom="10.0" top="5.0" />
             </GridPane.margin>
           </ComboBox>
          <Button fx:id="mButton" mnemonicParsing="false" onAction="#onButtonClick" text="Button" GridPane.columnIndex="2" GridPane.rowIndex="1" />
          <Label fx:id="mLabel" text="Label" GridPane.columnIndex="2" GridPane.rowIndex="2" />
       </children>
    </GridPane>
  • 相关阅读:
    Android的目录结构说明
    IOS-线程(GCD)
    iOS UI-线程(NSThread)及其安全隐患与通信
    iOS UI-自动布局(AutoLayout)
    iOS UI-自动布局(Autoresizing)
    IOS-Core Data的使用
    OC 数据持久化(数据本地化)- 本地存储
    iOS UI-应用管理(使用Cell模板)
    IOS UI-QQ好友列表
    IOS-多线程
  • 原文地址:https://www.cnblogs.com/townsend/p/7880729.html
Copyright © 2020-2023  润新知