先让东西显示出来
我们首先创建一个窗体程序,程序必须继承自 javafx.application.Application
类,并实现相关接口:
package com.codelideliwan;
import javafx.application.Application;
import javafx.stage.Stage;
public class FirstApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.show(); // 让窗体显示出来
}
}
复制代码
然后,我们在 main
方法中启动:
package com.codelideliwan;
public class Main {
public static void main(String[] args) {
FirstApp.launch(FirstApp.class, args);
}
}
复制代码
运行 main
方法即可看见弹出的窗口了。只不过这个窗口是一个空白窗口,里面什么也没有。
需要注意的是,Stage
即是窗口类,表示一个窗口,我们可以使用方法内提供的窗口,也可以自己 new 一个窗口。
概念介绍
这里介绍几个概念:
- Stage:窗口,表示显示出来的窗口,
Stage
在调用show
方法的时候才会显示出来。- Scene:场景,如果你想在窗口上显示任何内容,这个内容都必须放在
Scene
上面。- Node:节点,所有依附于
Scene
显示出来的内容,都是节点,所有的控件、布局等也都是节点。- Controls:控件,控件是用来进行操作的节点,比如按钮、复选框等都属于空间。
- Layouts:布局,布局是用来约束控件等显示的方式、位置等的节点,比如垂直布局、水平布局等。
- 其他:诸如图表、图形等,都是一种节点。
下面我们就需要基于以上的介绍给窗口加点料了。
基本组件的使用
我们需要给窗口添加一个按钮,并添加一行文字,文字在按钮的下方:
package com.codelideliwan;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class FirstApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Hello Stage"); // 设置窗口显示的名称
VBox vBox = new VBox(); // 添加一个垂直布局
vBox.getChildren().add(new Button("I am a button")); // 添加一个按钮
vBox.getChildren().add(new Label("I am a label")); // 添加一行文字
Scene scene = new Scene(vBox); // 创建一个 scene,并显示垂直布局
primaryStage.setScene(scene); // 让窗体显示对应的 scene
primaryStage.show(); // 让窗体显示出来
}
}
复制代码
再次运行,即可发现显示出来了一个按钮和一个文字。
现在发现,点击按钮后没有任何反应,我想点击按钮的时候,下面给我计数点击了多少次,该怎么办呢?
为按钮添加点击事件
可以给按钮添加相应的点击事件,比如点击了以后下面显示点击了多少次:
package com.codelideliwan;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.util.concurrent.atomic.AtomicInteger;
public class FirstApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Hello Stage"); // 设置窗口显示的名称
VBox vBox = new VBox(); // 添加一个垂直布局
Button button = new Button("I am a button");
Label label = new Label("I am a label");
vBox.getChildren().addAll(button, label);
AtomicInteger count = new AtomicInteger(0); // 这里使用一个 AtomicInteger 来计数
// 给按钮添加点击事件
button.setOnMouseClicked(event -> {
label.setText("you clicked " + count.incrementAndGet() + " times.");
});
Scene scene = new Scene(vBox); // 创建一个 scene,并显示垂直布局
primaryStage.setScene(scene); // 让窗体显示对应的 scene
primaryStage.show(); // 让窗体显示出来
}
}
复制代码
现在,点击按钮就能看到对应的文字变化啦!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END