IDEA JavaFX 开发入门

本文导读

Hello Friend

新建Java SE项目

IDEA JavaFX 开发入门

IDEA JavaFX 开发入门

IDEA JavaFX 开发入门

代码实现

package com.lct.main;

/**
 * Created by Administrator on 2018/6/22 0022.
 * 下面这些javafx.*下面的API都是JDK8JRE8中内置好的,直接调用即可
 */

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * Java作为GUI(图形化用户界面)程序
 * 1、入口必须继承Application抽象类
 */
public class HelloFriend extends Application {
    /**
     * atomicInteger:用于统计用户单击按钮的次数
     */
    private static AtomicInteger atomicInteger = new AtomicInteger(0);

    /**
     * 2、然后实现的它的start抽象方法
     *
     * @param primaryStage
     */
    @Override
    public void start(Stage primaryStage) {

        /**创建一个按钮控件
         * 并设置按钮上的文字,同时为他绑定单击事件,鼠标点击按钮后,控制台输出"Hello Friend"*/
        Button btn = new Button();
        btn.setText("Say 'Hello Friend'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println(atomicInteger.addAndGet(1) + "Hello Friend");
            }
        });

        /**创建一个堆栈面板,面板包含控件*/
        StackPane root = new StackPane();
        root.getChildren().add(btn);

        /**创建一个场景,场景包含面板*/
        Scene scene = new Scene(root, 300, 250);

        /**最后将场景放入到舞台中,舞台包含场景<-场景包含面板<-面板包含控件*/
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(scene);
        /**显示*/
        primaryStage.show();
    }

    public static void main(String[] args) {
        /**
         * GUI程序必须从入口的main方法进入并启动
         * launchApplication中的,调用它则可启动此GUI程序了
         */
        launch(args);
    }
}

效果演示

IDEA JavaFX 开发入门

Hello World

  • 上面是使用Java SE开发的JavaFX应用,完全是可以的。然而JavaFX作为一个强大的类库,有着自己的架构,很多内容也是固定的。
  • 如同可以直接开发安卓项目一样,IDEA也可以直接创建JavaFX应用
  • 如果不使用JavaSE方式开发JavaFX的话,Eclipse要安装插件才可以,但是IDEA直接可以开发

创建JavaFX应用

IDEA JavaFX 开发入门

IDEA JavaFX 开发入门

  • Controller:默认这个类里面是空的
  • Main:为整个应用的程序入口
  • sample.fxml:这是应用窗口的布局文件,也可以叫资源文件

IDEA JavaFX 开发入门

默认代码

Controller

  • 内容默认是空的
package sample;

public class Controller {
}

sample.fxml

  • 窗口的布局文件
  • 可以看到下面的<GridPane>网格面板标签关联了上面的Controller类
<?import javafx.scene.layout.GridPane?>
<GridPane fx:controller="sample.Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>

Main

  • 可以看到整个窗口默认是从布局文件进行加载布局的,然后设置了窗口的标题以及大小,但因为布局文件中没有定义内容,所以应用启动之后,窗口是空的

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

运行效果

IDEA JavaFX 开发入门