JavaFX 超详细入门教程 - 从零开始

目录

JavaFX 超详细入门教程 - 从零开始

🎯 第一章:什么是JavaFX?(用生活例子解释)

想象你要开一家餐厅

为什么要学JavaFX而不是其他的?

🏗️ 第二章:准备工作(搭建环境)

就像装修前要准备工具一样

最简单的准备方法:

🎪 第三章:核心概念详解(用马戏团比喻)

想象JavaFX是一个马戏团

Application(马戏团)

Stage(大帐篷)

Scene(一场表演)

Node(演员和道具)

📝 第四章:第一个程序(一步一步详解)

我们来搭建最简单的"餐厅"

运行这个程序会发生什么?

🎛️ 第五章:常用控件详解(餐厅里的各种设备)

5.1 Label(招牌/标签)

5.2 Button(按钮)

5.3 TextField(文本框)

5.4 实用例子:客人信息登记

运行这个程序后你会看到:

🏠 第六章:布局详解(怎么摆放餐厅家具)

想象你要摆放餐厅里的桌椅

6.1 VBox - 垂直排列(像排队)

6.2 HBox - 水平排列(像一桌人)

6.3 GridPane - 网格布局(像棋盘)

6.4 BorderPane - 五个区域(像餐厅的功能分区)

6.5 实用例子:完整的餐厅界面

🎨 第七章:美化界面(餐厅装修)

7.1 基础美化(就像给墙刷油漆)

7.2 使用CSS文件美化(专业装修方案)

🎯 第八章:事件处理详解(让餐厅会"听话")

8.1 按钮点击事件(最常用)

8.2 文本框事件(监听客人输入)

8.3 鼠标事件(检测各种鼠标操作)

8.4 实用例子:智能订单系统

🎓 第九章:常见问题和解决方法

Q1: 程序运行了但是没有窗口?

Q2: 按钮点击没反应?

Q3: 界面显示不全或者重叠?

Q4: 中文显示乱码?

🚀 第十章:进阶功能

10.1 对话框和提示框

10.2 文件选择器

10.3 表格显示数据

🎯 第十一章:完整项目实战

餐厅管理系统(综合所有知识点)

🎉 总结

学习建议:


🎯 第一章:什么是JavaFX?(用生活例子解释)

想象你要开一家餐厅

假设你要开一家餐厅,你需要什么?

  • 餐厅建筑 = 你的程序(Application)
  • 餐厅大门 = 程序窗口(Stage)
  • 餐厅装修 = 窗口里的内容(Scene)
  • 桌椅板凳 = 各种按钮、文本框等(Node)

JavaFX就是帮你"装修餐厅"的工具箱,里面有各种"家具"(控件)和"装修方案"(布局)。

为什么要学JavaFX而不是其他的?

就像选装修材料一样:

  • 老式材料(AWT) = 水泥砖头,能用但很丑
  • 普通材料(Swing) = 普通瓷砖,实用但不够现代
  • 高档材料(JavaFX) = 现代装修材料,又美观又实用

🏗️ 第二章:准备工作(搭建环境)

就像装修前要准备工具一样

在开始之前,你需要:

  1. JDK 11或以上版本(就像装修需要电工工具)
  2. IDE(推荐IntelliJ IDEA或Eclipse)(就像需要设计图纸)
  3. JavaFX库(就像需要装修材料)

最简单的准备方法:

  1. 下载IntelliJ IDEA
  2. 创建新项目时选择JavaFX
  3. 让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);  // 启动餐厅
    }
}

运行这个程序会发生什么?

  1. 点击运行按钮
  2. 出现一个小窗口 - 这就是Stage(窗口)
  3. 窗口标题显示"我的第一个JavaFX餐厅"
  4. 窗口里有一行字"欢迎来到我的餐厅!" - 这就是Label(标签)
  5. 窗口大小是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);
    }
}

运行这个程序后你会看到:

  1. 一个窗口,标题是"餐厅客人信息登记系统"
  2. 几个输入框,每个都有提示文字
  3. 一个按钮,写着"确认登记"
  4. 当你填写信息并点击按钮,会显示登记结果
  5. 如果没填完整,会红字提醒你
  6. 如果填写完整,会绿字显示成功,并清空输入框

🏠 第六章:布局详解(怎么摆放餐厅家具)

想象你要摆放餐厅里的桌椅

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值