首页 > 代码库 > javaFX制作helloWorld的几种方式

javaFX制作helloWorld的几种方式

//起因:因为即便是使用了JavaFX Scene Builder来直接图形化排版,但是仍然对应javaAPI,了解整体结构还是很有必要的,这是有清晰逻辑的基础。

environment:{

  Spring Tool Suite

  Version: 3.8.4.RELEASE
  Build Id: 201703310825
  Platform: Eclipse Neon.3 (4.6.3)

}

  1. way1:File->New->Project->JavaFX->JavaFX Project->(输入你的工程名)->finish
  • 运行一下->得到一个空窗口->打开src/application/Main.java:{继承了Application,重写了start(Stage)方法{说下结构-}}
  • primaryStage为主窗体-----类似swing里的JFrame
  • Scene为场景-------需要添加一个布局面板,像一张铺平在桌面上的布,但不能直接放东西,需要布局来规范东西放置方式
  • root-------------为布局--layout---绑定在场景上,
  • 添加子空间,在fx里是以节点的方式添加的,如果你学过树结构,就是那样的,所以得使用root.getChildren得到列表。
  • 还有就是添加控件必须在使用布局面板生成场景前
  • 场景绑定在舞台上---显示舞台就出来效果了
  • 怎么启动?main方法里的launch方法是Application的静态方法,来继承实现了Application的类
  • 默认写的layout是BorderPane但是刚学不会加,改成了FlowPane...
  • 技术分享
     1 package application;
     2     
     3 import javax.swing.JOptionPane;
     4 import javafx.application.Application;
     5 //import javafx.event.ActionEvent;
     6 import javafx.stage.Stage;
     7 import javafx.scene.Scene;
     8 //import javafx.scene.control.Alert;
     9 //import javafx.scene.control.Alert.AlertType;
    10 import javafx.scene.control.Button;
    11 //import javafx.scene.control.Dialog;
    12 //import javafx.scene.layout.BorderPane;
    13 import javafx.scene.layout.FlowPane;
    14 public class Main extends Application {
    15     @Override
    16     public void start(Stage primaryStage) {
    17         try {
    18             FlowPane root = new FlowPane();
    19             //-----------------test-----------------add----------(
    20             Button button = new Button("hello JavaFX");
    21             root.getChildren().add(button);
    22             button.setOnAction((event)->{//lambda表达式
    23                 //不会用FX的弹出对话框
    24                 JOptionPane.showMessageDialog(null, "Hello JavaFX");
    25             });
    26             //-----------------test-----------------add----------)
    27             Scene scene = new Scene(root,400,400);
    28             scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
    29             primaryStage.setScene(scene);
    30             primaryStage.show();
    31         } catch(Exception e) {
    32             e.printStackTrace();
    33         }
    34     }
    35     
    36     public static void main(String[] args) {
    37         launch(args);
    38         
    39     }
    40 }
    View Code

     2.way2:way1不要直接Finish,next到最后,Declarative UI->language:FXML

  • 从Main.java的start(Stage)中可以看出,布局面板是通过加载Sample.fxml得到,就可以通过修改.fxml来更改布局
  • Main.java:
    技术分享
     1 package application;
     2     
     3 import javafx.application.Application;
     4 import javafx.stage.Stage;
     5 import javafx.scene.Scene;
     6 import javafx.scene.layout.FlowPane;
     7 import javafx.fxml.FXMLLoader;
     8 
     9 
    10 public class Main extends Application {
    11     @Override
    12     public void start(Stage primaryStage) {
    13         try {
    14             FlowPane root = (FlowPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
    15             Scene scene = new Scene(root,400,400);
    16             scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
    17             primaryStage.setScene(scene);
    18             primaryStage.show();
    19         } catch(Exception e) {
    20             e.printStackTrace();
    21         }
    22     }
    23     
    24     public static void main(String[] args) {
    25         launch(args);
    26     }
    27 }
    View Code
  • 文件介绍:

javaFX制作helloWorld的几种方式