版本 1.0 | JavaFX 23 + BootstrapFX 主题框架 | 设计目标:现代化、清晰、易用
.btn, .btn-primary, .table, .table-striped, .label, .badge, .well 等),避免重复造轮子style.css 覆盖少量变量(品牌色、圆角微调),保持整体风格统一BootstrapFX 默认色彩基础上,覆盖以下品牌色:
| BootstrapFX 变量 | 定制值 | 用途 |
|---|---|---|
-fx-primary |
#4F6CF7 |
主色调:按钮、链接、激活态 |
-fx-success |
#10B981 |
成功:通过、上架 |
-fx-warning |
#F59E0B |
警告:待审核、等待 |
-fx-danger |
#EF4444 |
危险:删除、拒绝、退出 |
-fx-info |
#3B82F6 |
信息:查看详情 |
| 页面背景 | #F5F7FA |
替代纯白,增加层次感 |
在
style.css中通过 BootstrapFX 的选择器覆盖即可,无需重新定义全套组件样式。
┌──────────────────────────────────────────────────────────────┐
│ BootstrapFX Navbar(顶部导航) │
│ 🏫 校园二手书市 [浏览] [交易] [个人] [卖家] [统计] [管理] │ 👤 用户 ⏻ |
├──────────────────────────────────────────────────────────────┤
│ │
│ Main Content — 各 Tab 内容区域 │
│ (基于 BootstrapFX .well / .panel / .table 构建) │
│ │
├──────────────────────────────────────────────────────────────┤
│ 底部状态栏(可选) │
└──────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────┐
│ │
│ ┌──────────────────────┐ │
│ │ .well (圆角卡片) │ │
│ │ │ │
│ │ 📚 校园二手书市 │ │
│ │ │ │
│ │ ┌──────────────┐ │ │
│ │ │ form-control │ │ │
│ │ │ 用户名 │ │ │
│ │ └──────────────┘ │ │
│ │ ┌──────────────┐ │ │
│ │ │ form-control │ │ │
│ │ │ 密码 │ │ │
│ │ └──────────────┘ │ │
│ │ │ │
│ │ [ .btn .btn-primary .btn-block ] │
│ │ │ 登 录 │ │
│ │ └──────────────────────┘ │ │
│ │ │ │
│ │ 没有账号?立即注册 │ │
│ └──────────────────────┘ │
│ │
└────────────────────────────────────────────┘
.well 卡片,max-width: 400pxform-control 类btn btn-primary btn-block与登录页风格一致,增加更多表单字段。布局同上,使用 .well 卡片包裹。
┌──────────────────────────────────────────────────────────────┐
│ 搜索栏(BootstrapFX 行内表单) │
│ ┌────────────────────┐ ┌──────────┐ ┌──────┐ │
│ │ form-control │ │ dropdown │ │ .btn │ │
│ │ 搜索书名/作者... │ │ 全部分类 ▾│ │ 🔍 │ │
│ └────────────────────┘ └──────────┘ └──────┘ │
│ │
│ ●━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━● │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ .well │ │ .well │ │ .well │ │ .well │ │
│ │ 图书卡片 │ │ 图书卡片 │ │ 图书卡片 │ │ 图书卡片 │ │
│ │ │ │ │ │ │ │ │ │
│ │ 书名 │ │ 书名 │ │ 书名 │ │ 书名 │ │
│ │ 作者 │ │ 作者 │ │ 作者 │ │ 作者 │ │
│ │ ¥价格 │ │ ¥价格 │ │ ¥价格 │ │ ¥价格 │ │
│ │ 库存:N │ │ 库存:N │ │ 库存:N │ │ 库存:N │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 分页: [1] [2] [3] ... │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ .well — 书籍详情面板(右侧滑出 / 底部) │ │
│ │ 书名:Java程序设计 │ │
│ │ 作者:刘晓明 分类:教材 │ │
│ │ 原价:¥49.90 售价:¥48.00 │ │
│ │ ┌──┐ ┌──┐ ┌──┐ [btn-primary] 立即购买 │ │
│ │ │ -│ │ 1│ │ +│ │ │
│ │ └──┘ └──┘ └──┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
改造重点:
TableView 改为 FlowPane / TilePane 卡片网格,每张卡片为 .welllabel label-success 或品牌色)、原价(删除线)、库存徽章(badge)-fx-effect: dropshadow 加深阴影┌──────────────────────────────────────────────────────────────┐
│ 我的交易记录 [.btn .btn-secondary] 刷新 │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ .table .table-striped │ │
│ │ ┌────┬──────────┬──────┬────────┬────────────────┐ │ │
│ │ │ # │ 书名 │ 数量 │ 总价 │ 时间 │ │ │
│ │ ├────┼──────────┼──────┼────────┼────────────────┤ │ │
│ │ │ 1 │ Java... │ 5 │ ¥240 │ 2026-06-15 │ │ │
│ │ │ 2 │ Photo... │ 2 │ ¥112 │ 2026-06-15 │ │ │
│ │ └────┴──────────┴──────┴────────┴────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ 空状态:显示友好提示 "还没有交易记录,去逛逛吧~" │
└──────────────────────────────────────────────────────────────┘
.table .table-striped 直接获得斑马纹表格.btn .btn-secondary 刷新┌──────────────────────────────────────────────┐
│ .well │
│ ┌──────────────────────────────────────────┐ │
│ │ 👤 个人资料 │ │
│ │ │ │
│ │ 用户名 │ [form-control:readonly] │ │
│ │ 昵称 │ [form-control] │ │
│ │ 邮箱 │ [form-control] │ │
│ │ 电话 │ [form-control] │ │
│ │ 院系 │ [form-control] │ │
│ │ 信用分 │ ⭐⭐⭐⭐⭐ 100 │ │
│ │ │ │
│ │ [.btn .btn-primary] 保存修改 │ │
│ └──────────────────────────────────────────┘ │
└──────────────────────────────────────────────┘
.well 卡片包裹form-control + disabled 样式┌──────────────────────────────────────────────────────────────┐
│ .well — 统计条 │
│ 在售: 5本 │ 库存: 140本 │ 已售: 23本 │
│ │
│ 我的书籍 [.btn-secondary] 刷新 │
│ [.btn-success] + 添加新书 │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ .table .table-striped │ │
│ │ ┌──┬──────────┬─────┬────┬────────┬──────────────┐ │ │
│ │ │# │ 书名 │售价 │库存│ 状态 │ 操作 │ │ │
│ │ ├──┼──────────┼─────┼────┼────────┼──────────────┤ │ │
│ │ │1 │ Java │¥48 │ 90 │ ✅上架 │ ✏️ 🗑️ 📊 │ │ │
│ │ │2 │ Photo │¥56 │ 50 │ ⏳待审核│ ✏️ 🗑️ 📊 │ │ │
│ │ └──┴──────────┴─────┴────┴────────┴──────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ ▼ 添加新书 / 编辑书籍 (TitledPane) │ │
│ │ 书名 [ ] 作者 [ ] │ │
│ │ 分类 [ ] 原价 [ ] │ │
│ │ 售价 [ ] 库存 [ ] │ │
│ │ [.btn-primary] 保存 │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
.label 或自定义 HBoxlabel label-success / label label-warning / label label-dangerform-control,按钮使用 .btn .btn-success/.btn .btn-primary.table .table-striped┌──────────────────────────────────────────────────────────────┐
│ 数据洞察 [.btn-secondary] 刷新数据 │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ .well │ │ .well │ │
│ │ 交易总金额 │ │ 交易总笔数 │ │
│ │ ¥5,720.00 │ │ 12 笔 │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 🔥 热门院系 TOP 3 (.well) │ │
│ │ 1. 计算机学院 ████████████████░░░░ ¥3,200 │ │
│ │ 2. 经济学院 ██████████░░░░░░░░░░ ¥1,800 │ │
│ │ 3. 东语学院 ████░░░░░░░░░░░░░░░░ ¥720 │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 📚 畅销书籍 TOP 5 (.well) │ │
│ │ ┌──┬──────────┬──────┬────┐ │ │
│ │ │# │ 书名 │ 作者 │ 销量│ │ │
│ │ │1 │ Java │ 刘晓明│ 15 │ │ │
│ │ │2 │ Photo │ 王艳梅│ 8 │ │ │
│ │ └──┴──────────┴──────┴────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 📊 各院系平均折扣率 (.well) │ │
│ │ ┌──────────┬────────┬──────────────────────────┐ │ │
│ │ │ 院系 │ 折扣率 │ 进度条 (.progress-bar) │ │ │
│ │ │ 计算机学院│ 85% │ ████████░░ 85% │ │ │
│ │ │ 经济学院 │ 92% │ █████████░ 92% │ │ │
│ │ └──────────┴────────┴──────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
.well 并排显示,金额用大号字体 + .text-success 颜色.progress-bar 模拟).table 精简显示┌──────────────────────────────────────────────────────────────┐
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 👥 用户管理 [.btn-secondary] 刷新 │ │
│ │ [.btn-success] + 添加 │ │
│ │ ┌──┬──────┬────┬──────┬────┬───┬───┬────────────┐ │ │
│ │ │ID│用户名│昵称│ 院系 │信用│角色│卖家│ 操作 │ │ │
│ │ │1 │张大民│大民│计算机│100 │用户│否 │ ✏️ 🔄 🗑️ │ │ │
│ │ └──┴──────┴────┴──────┴────┴───┴───┴────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ ⏳ 待审核书籍 [.btn-secondary] 刷新 │ │
│ │ ┌──┬──────────┬──────┬────┬────┬────────────────┐ │ │
│ │ │ID│ 书名 │ 作者 │卖家│售价│ 操作 │ │ │
│ │ │3 │ 影视栏目..│ 李大山│ 2 │¥42 │ ✅通过 ❌拒绝 │ │ │
│ │ └──┴──────────┴──────┴────┴────┴────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 🤖 AI 分析报告 [.btn-primary] 生成报告 │ │
│ │ ┌──────────────────────────────────────────────────┐│ │
│ │ │ 分析内容(.well 或 textarea) ││ │
│ │ └──────────────────────────────────────────────────┘│ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
.well 包裹.table .table-striped.btn-success,「拒绝」用 .btn-danger| 组件 | BootstrapFX 类 | 说明 |
|---|---|---|
| 按钮 | .btn .btn-{primary/success/danger/warning/info/secondary} |
全套按钮颜色 |
| 输入框 | .form-control |
统一表单样式 |
| 表格 | .table .table-striped |
斑马纹 + 圆角 |
| 卡片容器 | .well |
浅灰背景圆角面板 |
| 标签/徽章 | .label .label-{success/warning/danger/info}、.badge |
状态标记 |
| 进度条 | .progress-bar(需包装在 .progress 内) |
折扣率展示 |
| 导航 | 使用 JavaFX TabPane,应用 BootstrapFX 导航样式 | |
| 提示文字 | .text-success / .text-danger / .text-warning / .text-info |
状态文字着色 |
仅需在 BootstrapFX 基础上覆盖以下内容:
/* ── 品牌色覆盖 ── */
.root {
-fx-primary: #4F6CF7;
-fx-primary-hover: #3B5DE7;
-fx-success: #10B981;
-fx-warning: #F59E0B;
-fx-danger: #EF4444;
-fx-info: #3B82F6;
}
/* ── 页面背景 ── */
.root {
-fx-background-color: #F5F7FA;
}
/* ── Well 卡片微调 ── */
.well {
-fx-background-radius: 8px;
-fx-effect: dropshadow(gaussian, rgba(0,0,0,0.06), 6, 0, 0, 2);
}
/* ── 卡片 hover ── */
.well:hover {
-fx-effect: dropshadow(gaussian, rgba(0,0,0,0.12), 12, 0, 0, 4);
}
/* ── 表格微调 ── */
.table-view {
-fx-background-radius: 8px;
-fx-border-radius: 8px;
}
/* ── 导航 Tab ── */
.tab-pane .tab-header-area .tab {
-fx-padding: 8px 16px;
}
/* ── 输入框高度微调 ── */
.form-control {
-fx-pref-height: 38px;
}
App.java 中 scene.getStylesheets().add("org/kordamp/bootstrapfx/bootstrapfx.css") 不变styleClass="btn btn-primary"FlowPane + TilePane 替代 TableView,每个子项为 Pane 或 VBox 加 .well 类| Phase | 内容 | 依赖 |
|---|---|---|
| P1 样式覆盖 | 编写 style.css 覆盖层,配置品牌色 |
BootstrapFX 已集成 |
| P2 浏览页改造 | FlowPane 卡片网格代替 TableView,详情卡片 | P1 |
| P3 各页样式 | 统一个人信息、交易、卖家、统计、管理页 | P1 |
| P4 动效细节 | 卡片 hover 阴影、加载状态、空状态 | P2~P3 |
本文档定位为实施蓝图,所有 UI 组件优先使用 BootstrapFX 提供的基础类, 仅在布局结构和少量品牌样式上进行自定义。