本文导读
Hello Friend
新建Java SE项目



代码实现
package com.lct.main;
/**
* Created by Administrator on 2018/6/22 0022.
* 下面这些javafx.*下面的API都是JDK8、JRE8中内置好的,直接调用即可
*/
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方法进入并启动
* launch是Application中的,调用它则可启动此GUI程序了
*/
launch(args);
}
}
效果演示

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


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

默认代码
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);
}
}
运行效果
