一. JavaFX图形化的基操
1.1 示意图
1.2 基本代码
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class javafx01 extends Application{
@Override
public void start(Stage stage) throws Exception{
//舞台设置标题
stage.setTitle("HelloWorld");
//水平布局
HBox hBox = new HBox();
//控件
Button button = new Button("登录");
hBox.getChildren().add(button); //将控件添加到布局中
//场景(将布局添加到场景)
Scene scene = new Scene(hBox,200,200);
//将场景添加到舞台中
stage.setScene(scene);
//设置舞台在电脑中的x轴,y轴坐标
stage.setX(200);
stage.setY(100);
stage.show(); //舞台展示,要有这个才会有图形界面
}
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
Application.launch(args);
}
}
在这段代码中,Application抽象类
是JavaFX程序的入口,任何JavaFX程序都要继承该类并重写start()方法
二.Stage类(窗口)
2.1 Stage类的基本方法
- setTitle() #设置窗口标题
- getIcons() #改变窗口图标
- setResizable() #默认窗口大小是可以改变的,如果为false,窗口大小是不可以改变的
- setX(),setY() #修改窗口在屏幕中的位置 ,==但是我们一般设置窗口的宽高,而是设置场景的宽高
- initStyle() #设置窗口的风格
- initModality() #设置模态窗口(可以实现多窗口)
- event事件
2.2 Stage类的代码实现
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.image.Image;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.stage.Window;
import java.util.Optional;
public class javafx02 extends Application{
@Override
public void start(Stage stage) throws Exception{
stage.setTitle("Hello");//设置窗口的标题
//设置窗口图标
stage.getIcons().add(new Image("#这个里面存放你想更改的窗口图标的地址"));
//设置窗口大小
stage.setResizable(true);
//设置场景的宽高(一般设置场景的宽高来控制舞台的宽高)
Scene scene = new Scene(new Group(),400,200);
//设置舞台(窗口)的风格
stage.initStyle(StageStyle.DECORATED);// 默认窗口样式
stage.initStyle(StageStyle.UNDECORATED);//标题,图标,叉都没有
stage.initStyle(StageStyle.TRANSPARENT);// 设置stage背景透明
stage.initStyle(StageStyle.UNIFIED); // 设置stage白色背景
stage.initStyle(StageStyle.UTILITY);//只有一个关闭按钮和标题
//设置模态窗口(可以实现多窗口)
stage.initModality(Modality.NONE); //设置默认的模态窗口(每个窗口都可以使用)
stage.initModality(Modality.APPLICATION_MODAL);//可以打开多个窗口,但是当一个窗口运行的时候,其他窗口都是禁用的
Window primaryStage = null;
stage.initOwner(primaryStage); //在使用WINDOW_MODAL的时候,要指定父窗口
stage.initModality(Modality.WINDOW_MODAL);//点开WINDOW_MODAL这个窗口时,非模态窗口可以使用,只有父窗口不可以使用
//窗口的事件event(有最大化,最小化,隐藏,关闭,键盘事件等,下面介绍如何设置窗口的关闭事件,即会弹出提示框)
Platform.setImplicitExit(false);//取消操作系统的默认退出
stage.setOnCloseRequest(event->{
event.consume();//取消关闭窗口的按钮(就是不会让你关闭窗口),既不关闭窗口也不退出程序
Alert alert = new Alert(Alert.AlertType.CONFIRMATION); //实例提示框
alert.setTitle("退出程序");
alert.setHeaderText(null);
alert.setContentText("你是否要退出程序?");
Optional<ButtonType> result = alert.showAndWait();
if(result.get() == ButtonType.OK){ //如果你选择确定,则关闭窗口
Platform.exit();
}
});
//设置舞台的宽高(如果场景和舞台都设置了宽高,那么优先显示舞台的宽高)
stage.setScene(scene);
stage.setWidth(100);
stage.setHeight(100);
stage.show();
}
public static void mian(String[] args){
launch();
}
}