移至csdn更新:http://blog.csdn.net/qq_37837828/article/details/78732563
用過swing都知道有多蛋疼,界面有多丑。自從用了javaFX,腰也不酸了,腿也不疼了。
廢話不多說,開擼!
工具: IntelliJ IDEA (其實我也習慣用eclipse,但是一樣東西能流行起來自然有它的道理)
jdk : 1.8
先從最簡單的開始,新建一個類,寫一個main函數(簡單的我想打自己)。
public class Main{ public static void main(String[] args) { } }
第一件事,繼承application類以獲得javaFX的所有功能。
import javafx.application.Application; import javafx.stage.Stage; public class Main extends Application{ public static void main(String[] args) { launch(args);//啟動程序時,初始化javaFX設置 } @Override public void start(Stage primaryStage) throws Exception { } }
start()方法就按字面意思理解就好了,程序啟動執行的方法,所以我們的初始化界面的方法都寫在里面。
那界面都有哪些東西呢,最外面那個帶 - □ x 的部分,在javaFX中叫stage。 所以,我們至少需要一個stage,才能看見界面。而上面可以看到,在start(String primaryStage)中,已經有了一個stage,如何讓
stage顯示呢,調用stage.show()方法;
后面盡量寫注釋,就不多bb了。
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Main extends Application{ public static void main(String[] args) { launch(args);//啟動程序時,初始化javaFX設置 } @Override public void start(Stage primaryStage) throws Exception { Button button = new Button("點擊按鈕"); StackPane layout = new StackPane();//布局 layout.getChildren().add(button);//將按鈕添加入布局 Scene scene = new Scene(layout,300,300);//設置布局、大小 primaryStage.setScene(scene);//將場景添加到stage primaryStage.show();//顯示stage } }
看圖就很好理解了,控件添加到布局里面,布局添加到secen中,設置scene大小,scene添加到stage,顯示stage。
下面給我們的按鈕添加一個點擊事件:實現EventHandler<ActionEvent>接口,重寫hanle()方法,這里我為了方便就寫在一個類里了,實際開發中最好分開,一個類只干一類事,一個方法只干一件事。
給按鈕綁定事件:button.setOnAction(this);由於我這里是當前類繼承的,所以這里寫this就可以了。
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; public class Main extends Application implements EventHandler<ActionEvent>{ public static void main(String[] args) { launch(args);//啟動程序時,初始化javaFX設置 } @Override public void start(Stage primaryStage) throws Exception { Button button = new Button("點擊按鈕"); //button.setOnAction(this::handle); button.setOnAction(this);//綁定事件 StackPane layout = new StackPane();//容器 layout.getChildren().add(button);//將按鈕添加入布局 Scene scene = new Scene(layout,300,300);//設置容器、大小 primaryStage.setScene(scene);//將場景添加到stage primaryStage.show();//顯示stage } @Override public void handle(ActionEvent event) { System.out.println("Click button !"); } }