目录
6.4 BorderPane - 五个区域(像餐厅的功能分区)
🎯 第一章:什么是JavaFX?(用生活例子解释)
想象你要开一家餐厅
假设你要开一家餐厅,你需要什么?
- 餐厅建筑 = 你的程序(Application)
- 餐厅大门 = 程序窗口(Stage)
- 餐厅装修 = 窗口里的内容(Scene)
- 桌椅板凳 = 各种按钮、文本框等(Node)
JavaFX就是帮你"装修餐厅"的工具箱,里面有各种"家具"(控件)和"装修方案"(布局)。
为什么要学JavaFX而不是其他的?
就像选装修材料一样:
- 老式材料(AWT) = 水泥砖头,能用但很丑
- 普通材料(Swing) = 普通瓷砖,实用但不够现代
- 高档材料(JavaFX) = 现代装修材料,又美观又实用
🏗️ 第二章:准备工作(搭建环境)
就像装修前要准备工具一样
在开始之前,你需要:
- JDK 11或以上版本(就像装修需要电工工具)
- IDE(推荐IntelliJ IDEA或Eclipse)(就像需要设计图纸)
- JavaFX库(就像需要装修材料)
最简单的准备方法:
- 下载IntelliJ IDEA
- 创建新项目时选择JavaFX
- 让IDE帮你搞定一切(就像请装修公司全包)
🎪 第三章:核心概念详解(用马戏团比喻)
想象JavaFX是一个马戏团
🎪 马戏团 (Application) - 整个表演
├── 🏕️ 大帐篷 (Stage) - 表演的场地
├── 🎭 一场表演 (Scene) - 帐篷里正在演的节目
└── 🤹 演员道具 (Node) - 小丑、狮子、跳火圈等
Application(马戏团)
- 这是你的整个程序
- 就像马戏团的老板,负责管理一切
- 每个JavaFX程序都要继承Application类
Stage(大帐篷)
- 这是你看到的窗口
- 有边框、标题栏、关闭按钮
- 一个马戏团可以有多个帐篷(多个窗口)
Scene(一场表演)
- 这是窗口里显示的具体内容
- 就像马戏团的一场表演
- 一个帐篷同时只能演一场戏
Node(演员和道具)
- 这是界面上的各种元素
- 按钮、文本框、图片等等
- 就像表演中的演员、道具、背景
📝 第四章:第一个程序(一步一步详解)
我们来搭建最简单的"餐厅"
// 1. 导入需要的"工具"(就像搬装修材料)
import javafx.application.Application; // 餐厅的基本框架
import javafx.scene.Scene; // 餐厅的装修方案
import javafx.scene.control.Label; // 一块招牌
import javafx.stage.Stage; // 餐厅的门面
// 2. 创建我们的餐厅类(继承Application就是说"我要开餐厅")
public class 我的第一个程序 extends Application {
// 3. 这个方法会在程序启动时自动运行(就像餐厅开门营业)
public void start(Stage 窗口) {
// 4. 制作一块招牌
Label 招牌 = new Label("欢迎来到我的餐厅!");
// 5. 设计餐厅内部(创建场景)
// 参数解释:招牌, 宽度300像素, 高度200像素
Scene 餐厅内部 = new Scene(招牌, 300, 200);
// 6. 给餐厅起个名字(设置窗口标题)
窗口.setTitle("我的第一个JavaFX餐厅");
// 7. 把装修方案应用到餐厅(把场景放到窗口里)
窗口.setScene(餐厅内部);
// 8. 开门营业!(显示窗口)
窗口.show();
}
// 9. 程序的入口,就像餐厅的总开关
public static void main(String[] args) {
launch(args); // 启动餐厅
}
}
运行这个程序会发生什么?
- 点击运行按钮
- 出现一个小窗口 - 这就是Stage(窗口)
- 窗口标题显示"我的第一个JavaFX餐厅"
- 窗口里有一行字"欢迎来到我的餐厅!" - 这就是Label(标签)
- 窗口大小是300x200像素
🎛️ 第五章:常用控件详解(餐厅里的各种设备)
5.1 Label(招牌/标签)
就像餐厅里的各种标识牌:
// 最简单的招牌
Label 简单招牌 = new Label("今日特价");
// 带样式的招牌(就像用不同颜色的LED灯)
Label 醒目招牌 = new Label("限时优惠!");
醒目招牌.setStyle(
"-fx-font-size: 20px;" + // 字体大小20像素
"-fx-text-fill: red;" + // 红色字体
"-fx-font-weight: bold;" // 粗体
);
// 多行文字的招牌
Label 详细说明 = new Label("本店营业时间:\n上午9点到晚上10点\n欢迎光临!");
5.2 Button(按钮)
就像餐厅里的各种开关和服务铃:
// 普通按钮(就像点餐铃)
Button 点餐按钮 = new Button("点餐");
// 按钮被点击时要做什么(服务员听到铃声要过来)
点餐按钮.setOnAction(事件 -> {
System.out.println("客人要点餐了!");
});
// 漂亮的按钮(装了彩色灯的点餐铃)
Button 特色按钮 = new Button("今日特色");
特色按钮.setStyle(
"-fx-background-color: gold;" + // 金色背景
"-fx-text-fill: black;" + // 黑色文字
"-fx-font-size: 16px;" + // 字体大小
"-fx-padding: 10px 20px;" // 按钮的内边距(让按钮更大)
);
// 按钮点击事件(做更多事情)
特色按钮.setOnAction(事件 -> {
System.out.println("推荐今日特色菜!");
System.out.println("宫保鸡丁、麻婆豆腐、糖醋里脊");
// 这里可以弹出菜单、播放音乐等等
});
5.3 TextField(文本框)
就像餐厅里的留言簿,客人可以写字:
// 普通留言簿(客人可以写任何内容)
TextField 客人留言 = new TextField();
// 有提示的留言簿(告诉客人该写什么)
TextField 客人姓名 = new TextField();
客人姓名.setPromptText("请输入您的姓名"); // 灰色提示文字
// 预填写内容的留言簿
TextField 电话号码 = new TextField("138"); // 已经写好了"138"
// 获取客人写的内容
String 客人写的名字 = 客人姓名.getText(); // 拿到客人填写的姓名
System.out.println("客人叫:" + 客人写的名字);
// 清空留言簿
客人姓名.clear(); // 擦掉留言簿上的字
// 往留言簿里写字
客人姓名.setText("张三"); // 服务员帮忙写上"张三"
5.4 实用例子:客人信息登记
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class 客人信息登记 extends Application {
public void start(Stage 窗口) {
// 创建各种"表格"让客人填写
Label 标题 = new Label("客人信息登记");
标题.setStyle("-fx-font-size: 18px; -fx-font-weight: bold;");
TextField 姓名框 = new TextField();
姓名框.setPromptText("请输入您的姓名");
TextField 电话框 = new TextField();
电话框.setPromptText("请输入手机号码");
TextField 人数框 = new TextField();
人数框.setPromptText("请输入用餐人数");
Button 登记按钮 = new Button("确认登记");
Label 结果显示 = new Label(""); // 用来显示登记结果
// 当客人点击"确认登记"时
登记按钮.setOnAction(事件 -> {
// 获取客人填写的信息
String 客人姓名 = 姓名框.getText();
String 客人电话 = 电话框.getText();
String 用餐人数 = 人数框.getText();
// 检查客人是否都填写了
if (客人姓名.isEmpty() || 客人电话.isEmpty() || 用餐人数.isEmpty()) {
结果显示.setText("请填写完整信息!");
结果显示.setStyle("-fx-text-fill: red;"); // 红色警告
} else {
// 显示登记成功的信息
String 成功信息 = "登记成功!\n" +
"客人姓名:" + 客人姓名 + "\n" +
"联系电话:" + 客人电话 + "\n" +
"用餐人数:" + 用餐人数 + "人";
结果显示.setText(成功信息);
结果显示.setStyle("-fx-text-fill: green;"); // 绿色成功
// 清空所有输入框,准备下一位客人
姓名框.clear();
电话框.clear();
人数框.clear();
}
});
// 把所有东西整齐地排列(就像整理桌子)
VBox 整体布局 = new VBox(15); // 每个元素之间间隔15像素
整体布局.setStyle("-fx-padding: 20px;"); // 四周留20像素空白
整体布局.getChildren().addAll(
标题,
new Label("客人姓名:"), 姓名框,
new Label("联系电话:"), 电话框,
new Label("用餐人数:"), 人数框,
登记按钮,
结果显示
);
Scene 场景 = new Scene(整体布局, 300, 400);
窗口.setTitle("餐厅客人信息登记系统");
窗口.setScene(场景);
窗口.show();
}
public static void main(String[] args) {
launch(args);
}
}
运行这个程序后你会看到:
- 一个窗口,标题是"餐厅客人信息登记系统"
- 几个输入框,每个都有提示文字
- 一个按钮,写着"确认登记"
- 当你填写信息并点击按钮,会显示登记结果
- 如果没填完整,会红字提醒你
- 如果填写完整,会绿字显示成功,并清空输入框
🏠 第六章:布局详解(怎么摆放餐厅家具)
想象你要摆放餐厅里的桌椅
6.1 VBox - 垂直排列(像排队)
想象客人排队等位,一个接一个站成一条直线:
VBox 排队区域 = new VBox(10); // 每个人之间间隔10像素
排队区域.getChildren().addAll(
new Label("第1位客人"),
new Label("第2位客人"),
new Label("第3位客人")
);
// 详细控制排列方式
VBox 精确排队 = new VBox();
精确排队.setSpacing(15); // 间距15像素
精确排队.setAlignment(Pos.CENTER); // 居中对齐
精确排队.setPadding(new Insets(20)); // 四周留20像素空白
6.2 HBox - 水平排列(像一桌人)
想象一桌客人并排坐着:
HBox 一桌客人 = new HBox(20); // 每个座位间隔20像素
一桌客人.getChildren().addAll(
new Button("座位1"),
new Button("座位2"),
new Button("座位3"),
new Button("座位4")
);
// 让座位在桌子中间
一桌客人.setAlignment(Pos.CENTER);


3081

被折叠的 条评论
为什么被折叠?



