@ -0,0 +1,13 @@
|
||||
package com.mathgenerator;
|
||||
|
||||
/**
|
||||
* 应用程序的非 JavaFX 启动器。
|
||||
* 这是解决 JavaFX fat JAR 打包时 "unnamed module" 警告的
|
||||
* 标准解决方案。它通过一个非 JavaFX 的 main 方法来启动真正的
|
||||
* JavaFX Application 类。
|
||||
*/
|
||||
public class Launcher {
|
||||
public static void main(String[] args) {
|
||||
MainApplication.main(args);
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 559 KiB |
|
After Width: | Height: | Size: 265 KiB |
|
After Width: | Height: | Size: 756 KiB |
|
After Width: | Height: | Size: 364 KiB |
|
After Width: | Height: | Size: 294 KiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 631 KiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.4 MiB |
|
After Width: | Height: | Size: 363 KiB |
|
After Width: | Height: | Size: 363 KiB |
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
@ -0,0 +1,955 @@
|
||||
/* ===== 统一界面尺寸 ===== */
|
||||
.root-container {
|
||||
-fx-pref-width: 400px;
|
||||
-fx-pref-height: 700px;
|
||||
-fx-min-width: 400px;
|
||||
-fx-min-height: 700px;
|
||||
-fx-max-width: 400px;
|
||||
-fx-max-height: 700px;
|
||||
}
|
||||
|
||||
/* ===== 登录界面专用样式 - 淡黄色和淡紫色主题 ===== */
|
||||
.login-background {
|
||||
-fx-background-image: url('../images/background.png'); /* 修改 */
|
||||
-fx-background-size: cover;
|
||||
-fx-background-position: center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: linear-gradient(to bottom right, #fff9c4, #f3e5f5);
|
||||
}
|
||||
|
||||
.login-glass-panel {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.85);
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.3);
|
||||
-fx-border-width: 1px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.15), 20, 0.3, 0, 6);
|
||||
}
|
||||
|
||||
.login-title {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 26px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.2), 4, 0.5, 2, 2);
|
||||
}
|
||||
|
||||
.login-textfield {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.95);
|
||||
-fx-border-color: rgba(186, 104, 200, 0.5);
|
||||
-fx-border-radius: 15px;
|
||||
-fx-background-radius: 15px;
|
||||
-fx-padding: 12px 16px;
|
||||
-fx-font-size: 14px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.2, 2, 2);
|
||||
}
|
||||
|
||||
.login-textfield:focused {
|
||||
-fx-border-color: rgba(156, 39, 176, 0.8);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.3), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.login-primary-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 16px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 12px 24px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.login-primary-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.6), 10, 0.4, 3, 3);
|
||||
-fx-scale-x: 1.05;
|
||||
-fx-scale-y: 1.05;
|
||||
}
|
||||
|
||||
.login-secondary-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff59d, #fff176);
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: #fff176;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 10px 20px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 245, 157, 0.4), 6, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.login-secondary-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff9c4, #fff59d);
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 245, 157, 0.6), 8, 0.4, 2, 2);
|
||||
}
|
||||
|
||||
.login-status-label {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.1);
|
||||
-fx-background-radius: 8px;
|
||||
-fx-padding: 8px 12px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.2);
|
||||
-fx-border-radius: 8px;
|
||||
-fx-border-width: 1px;
|
||||
}
|
||||
|
||||
/* ===== 注册界面专用样式 - 修复版本 ===== */
|
||||
.register-background-new {
|
||||
-fx-background-image: url('../images/register-bg.png'); /* 修改 */
|
||||
-fx-background-size: cover;
|
||||
-fx-background-position: center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: linear-gradient(to bottom right, #fff9c4, #f3e5f5);
|
||||
}
|
||||
|
||||
.register-glass-panel {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.85);
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.3);
|
||||
-fx-border-width: 1px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.15), 20, 0.3, 0, 6);
|
||||
}
|
||||
|
||||
.register-title {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 26px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.2), 4, 0.5, 2, 2);
|
||||
}
|
||||
|
||||
.register-textfield {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.95);
|
||||
-fx-border-color: rgba(186, 104, 200, 0.5);
|
||||
-fx-border-radius: 15px;
|
||||
-fx-background-radius: 15px;
|
||||
-fx-padding: 12px 16px;
|
||||
-fx-font-size: 14px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.2, 2, 2);
|
||||
}
|
||||
|
||||
.register-textfield:focused {
|
||||
-fx-border-color: rgba(156, 39, 176, 0.8);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.3), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.register-primary-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 16px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 12px 24px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.register-primary-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.6), 10, 0.4, 3, 3);
|
||||
-fx-scale-x: 1.05;
|
||||
-fx-scale-y: 1.05;
|
||||
}
|
||||
|
||||
.register-secondary-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff59d, #fff176);
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: #fff176;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 10px 20px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 245, 157, 0.4), 6, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.register-secondary-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff9c4, #fff59d);
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 245, 157, 0.6), 8, 0.4, 2, 2);
|
||||
}
|
||||
|
||||
.register-security-tip {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 12px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.1);
|
||||
-fx-background-radius: 8px;
|
||||
-fx-padding: 8px 12px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.2);
|
||||
-fx-border-radius: 8px;
|
||||
-fx-border-width: 1px;
|
||||
}
|
||||
|
||||
.register-code-container {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.9);
|
||||
-fx-background-radius: 15px;
|
||||
-fx-border-radius: 15px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.4);
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 8px 12px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.2, 2, 2);
|
||||
}
|
||||
|
||||
/* 修复验证码按钮大小 */
|
||||
.register-code-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 12px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 10px;
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 10px 16px;
|
||||
-fx-min-width: 100px;
|
||||
-fx-min-height: 40px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.3), 6, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.register-code-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.5), 8, 0.4, 2, 2);
|
||||
}
|
||||
|
||||
/* ===== 注册界面状态标签样式 - 修复长句子版本 ===== */
|
||||
.register-status-label {
|
||||
-fx-text-fill: transparent;
|
||||
-fx-font-size: 12px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-radius: 8px;
|
||||
-fx-padding: 0px;
|
||||
-fx-border-color: transparent;
|
||||
-fx-border-radius: 8px;
|
||||
-fx-border-width: 0px;
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-min-height: 0px;
|
||||
-fx-pref-height: 0px;
|
||||
-fx-max-width: 280px;
|
||||
-fx-line-spacing: 2px;
|
||||
}
|
||||
|
||||
.register-status-label-with-text {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 12px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.15);
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 12px 15px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.3);
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-min-height: 70px;
|
||||
-fx-pref-height: 70px;
|
||||
-fx-max-width: 280px;
|
||||
-fx-line-spacing: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
/* ===== 主菜单界面专用样式 - 浅紫色为主,浅黄色为辅 ===== */
|
||||
.mainmenu-background-new {
|
||||
-fx-background-image: url('../images/mainmenu-bg.png'); /* 修改 */
|
||||
-fx-background-size: cover;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: linear-gradient(to bottom right, #f3e5f5, #e1bee7);
|
||||
}
|
||||
|
||||
.mainmenu-glass-panel {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.92);
|
||||
-fx-background-radius: 30px;
|
||||
-fx-border-radius: 30px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.5);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.25), 25, 0.5, 0, 8);
|
||||
}
|
||||
|
||||
/* ===== 主菜单欢迎标题样式 - 修复长用户名显示 ===== */
|
||||
.mainmenu-welcome-title {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 24px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.25), 4, 0.6, 2, 2);
|
||||
-fx-wrap-text: true;
|
||||
-fx-text-alignment: center;
|
||||
-fx-alignment: center;
|
||||
-fx-max-width: 360px;
|
||||
}
|
||||
|
||||
.mainmenu-difficulty-label {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 20px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.2), 2, 0.4, 1, 1);
|
||||
}
|
||||
|
||||
/* ===== 难度按钮样式 - 浅紫色质感 ===== */
|
||||
.mainmenu-difficulty-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #e1bee7, #ba68c8);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 18px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: #ba68c8;
|
||||
-fx-border-width: 2px;
|
||||
-fx-padding: 15px 30px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.5), 12, 0.5, 3, 3);
|
||||
}
|
||||
|
||||
.mainmenu-difficulty-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ab47bc);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.7), 15, 0.6, 4, 4);
|
||||
-fx-scale-x: 1.08;
|
||||
-fx-scale-y: 1.08;
|
||||
}
|
||||
|
||||
.mainmenu-difficulty-button:pressed {
|
||||
-fx-background-color: linear-gradient(to bottom, #ab47bc, #8e24aa);
|
||||
}
|
||||
|
||||
/* ===== 数量标签样式 ===== */
|
||||
.mainmenu-count-label {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 16px;
|
||||
-fx-font-weight: bold;
|
||||
}
|
||||
|
||||
/* ===== 数量输入框样式 ===== */
|
||||
.mainmenu-count-textfield {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.95);
|
||||
-fx-border-color: rgba(186, 104, 200, 0.6);
|
||||
-fx-border-radius: 10px;
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 8px 12px;
|
||||
-fx-font-size: 14px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.3), 6, 0.2, 2, 2);
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
.mainmenu-count-textfield:focused {
|
||||
-fx-border-color: rgba(156, 39, 176, 0.8);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
/* ===== 功能按钮样式 - 浅黄色辅助 ===== */
|
||||
.mainmenu-function-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff59d, #ffeb3b);
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: #ffeb3b;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 10px 25px;
|
||||
-fx-min-width: 140px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 235, 59, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.mainmenu-function-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff9c4, #fff59d);
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 235, 59, 0.6), 10, 0.4, 3, 3);
|
||||
-fx-text-fill: #4a148c;
|
||||
}
|
||||
|
||||
/* ===== 退出按钮样式 - 浅紫色 ===== */
|
||||
.mainmenu-logout-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 10px 25px;
|
||||
-fx-min-width: 140px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.mainmenu-logout-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.6), 10, 0.4, 3, 3);
|
||||
}
|
||||
|
||||
/* ===== 状态标签样式 ===== */
|
||||
.mainmenu-status-label {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.15);
|
||||
-fx-background-radius: 8px;
|
||||
-fx-padding: 8px 12px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.3);
|
||||
-fx-border-radius: 8px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
/* ===== 答题界面专用样式 - 优化布局版本 ===== */
|
||||
.quiz-background-new {
|
||||
-fx-background-image: url('../images/quiz-bg.png'); /* 修改 */
|
||||
-fx-background-size: cover;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: linear-gradient(to bottom right, #fff9c4, #f3e5f5);
|
||||
}
|
||||
|
||||
.quiz-title-new {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 18px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.25), 4, 0.5, 2, 2);
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
/* ===== 进度条样式 ===== */
|
||||
.quiz-progress-bar-new {
|
||||
-fx-accent: #ba68c8;
|
||||
-fx-background-color: #f3e5f5;
|
||||
-fx-background-radius: 8px;
|
||||
-fx-border-radius: 8px;
|
||||
-fx-padding: 2px;
|
||||
}
|
||||
|
||||
.quiz-progress-bar-new .track {
|
||||
-fx-background-color: #f3e5f5;
|
||||
-fx-background-radius: 8px;
|
||||
}
|
||||
|
||||
.quiz-progress-bar-new .bar {
|
||||
-fx-background-color: linear-gradient(to right, #ba68c8, #ab47bc);
|
||||
-fx-background-radius: 8px;
|
||||
}
|
||||
|
||||
/* ===== 题目内容样式 - 减小高度 ===== */
|
||||
.quiz-question-text {
|
||||
-fx-text-fill: #4a148c;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 18px;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(255, 255, 255, 0.92);
|
||||
-fx-background-radius: 15px;
|
||||
-fx-padding: 15px 20px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.6);
|
||||
-fx-border-radius: 15px;
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.3), 10, 0.4, 3, 3);
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-min-height: 80px;
|
||||
-fx-pref-height: 80px;
|
||||
}
|
||||
|
||||
/* ===== 选项容器样式 - 减小高度 ===== */
|
||||
.quiz-options-container {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.88);
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.4);
|
||||
-fx-border-width: 2px;
|
||||
-fx-padding: 15px 20px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.25), 12, 0.4, 3, 3);
|
||||
-fx-min-height: 180px;
|
||||
-fx-pref-height: 180px;
|
||||
}
|
||||
|
||||
/* ===== 单选按钮样式 - 减小间距 ===== */
|
||||
.quiz-radio-button-new {
|
||||
-fx-text-fill: #4a148c;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-cursor: hand;
|
||||
-fx-padding: 8px 0px;
|
||||
}
|
||||
|
||||
.quiz-radio-button-new .radio {
|
||||
-fx-background-color: white;
|
||||
-fx-border-color: #ba68c8;
|
||||
-fx-border-radius: 12px;
|
||||
-fx-background-radius: 12px;
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 4, 0.3, 1, 1);
|
||||
}
|
||||
|
||||
.quiz-radio-button-new:selected .radio {
|
||||
-fx-background-color: #ba68c8;
|
||||
-fx-border-color: #7b1fa2;
|
||||
-fx-border-width: 3px;
|
||||
}
|
||||
|
||||
.quiz-radio-button-new:selected .dot {
|
||||
-fx-background-color: white;
|
||||
}
|
||||
|
||||
.quiz-radio-button-new:hover .radio {
|
||||
-fx-border-color: #7b1fa2;
|
||||
-fx-border-width: 3px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.3), 6, 0.4, 2, 2);
|
||||
}
|
||||
|
||||
/* ===== 提交按钮样式 ===== */
|
||||
.quiz-submit-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 16px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 2px;
|
||||
-fx-padding: 10px 25px;
|
||||
-fx-min-width: 150px;
|
||||
-fx-min-height: 45px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.4), 8, 0.4, 2, 2);
|
||||
}
|
||||
|
||||
.quiz-submit-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.6), 10, 0.5, 3, 3);
|
||||
-fx-scale-x: 1.05;
|
||||
-fx-scale-y: 1.05;
|
||||
}
|
||||
|
||||
.quiz-submit-button:pressed {
|
||||
-fx-background-color: linear-gradient(to bottom, #ab47bc, #8e24aa);
|
||||
}
|
||||
|
||||
/* ===== 答题状态标签样式 - 固定位置 ===== */
|
||||
.quiz-status-label-empty {
|
||||
-fx-text-fill: transparent;
|
||||
-fx-font-size: 13px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-radius: 8px;
|
||||
-fx-padding: 0px;
|
||||
-fx-border-color: transparent;
|
||||
-fx-border-radius: 8px;
|
||||
-fx-border-width: 0px;
|
||||
-fx-alignment: center;
|
||||
-fx-min-height: 0px;
|
||||
-fx-pref-height: 0px;
|
||||
-fx-max-height: 0px;
|
||||
}
|
||||
|
||||
.quiz-status-label-with-text {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 13px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.15);
|
||||
-fx-background-radius: 8px;
|
||||
-fx-padding: 8px 12px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.3);
|
||||
-fx-border-radius: 8px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-alignment: center;
|
||||
-fx-min-height: 35px;
|
||||
-fx-pref-height: 35px;
|
||||
-fx-max-height: 35px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 4, 0.3, 1, 1);
|
||||
}
|
||||
|
||||
/* ===== 分数界面专用样式 - 修复文字换行 ===== */
|
||||
.score-background-new {
|
||||
-fx-background-image: url('../images/score-bg.png'); /* 修改 */
|
||||
-fx-background-size: cover;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: linear-gradient(to bottom right, #fff9c4, #f3e5f5);
|
||||
}
|
||||
|
||||
.score-glass-panel-new {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.9);
|
||||
-fx-background-radius: 35px;
|
||||
-fx-border-radius: 35px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.4);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.25), 30, 0.6, 0, 10);
|
||||
-fx-padding: 30px 25px;
|
||||
}
|
||||
|
||||
.score-complete-title-new {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 32px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.3), 6, 0.6, 3, 3);
|
||||
-fx-wrap-text: true;
|
||||
-fx-text-alignment: center;
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
.score-label-new {
|
||||
-fx-text-fill: linear-gradient(to bottom, #ba68c8, #7b1fa2);
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 60px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.4), 8, 0.7, 4, 4);
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
.score-description-new {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 18px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
/* ===== 结果消息样式 - 完全修复文字换行 ===== */
|
||||
.result-message-new {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 18px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(255, 245, 157, 0.3);
|
||||
-fx-background-radius: 15px;
|
||||
-fx-padding: 12px 20px;
|
||||
-fx-border-color: rgba(255, 235, 59, 0.4);
|
||||
-fx-border-radius: 15px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 235, 59, 0.2), 8, 0.3, 2, 2);
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-max-width: 300px;
|
||||
-fx-min-height: 60px;
|
||||
-fx-pref-height: 60px;
|
||||
}
|
||||
|
||||
/* ===== 庆祝按钮样式 ===== */
|
||||
.celebrate-button-new {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 16px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 2px;
|
||||
-fx-padding: 12px 30px;
|
||||
-fx-min-width: 160px;
|
||||
-fx-min-height: 50px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.4), 10, 0.4, 3, 3);
|
||||
}
|
||||
|
||||
.celebrate-button-new:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.6), 12, 0.5, 4, 4);
|
||||
-fx-scale-x: 1.05;
|
||||
-fx-scale-y: 1.05;
|
||||
}
|
||||
|
||||
.celebrate-button-new:pressed {
|
||||
-fx-background-color: linear-gradient(to bottom, #ab47bc, #8e24aa);
|
||||
}
|
||||
|
||||
/* ===== 退出按钮样式 ===== */
|
||||
.score-logout-button-new {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff59d, #ffeb3b);
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: #ffeb3b;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 10px 25px;
|
||||
-fx-min-width: 140px;
|
||||
-fx-min-height: 45px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 235, 59, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.score-logout-button-new:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff9c4, #fff59d);
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 235, 59, 0.6), 10, 0.4, 3, 3);
|
||||
-fx-text-fill: #4a148c;
|
||||
}
|
||||
|
||||
/* ===== 修改密码界面专用样式 - 淡黄色和淡紫色主题 ===== */
|
||||
.password-background-new {
|
||||
-fx-background-image: url('../images/password-bg.png'); /* 修改 */
|
||||
-fx-background-size: cover;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: linear-gradient(to bottom right, #fff9c4, #f3e5f5);
|
||||
}
|
||||
|
||||
.password-glass-panel {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.88);
|
||||
-fx-background-radius: 30px;
|
||||
-fx-border-radius: 30px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.4);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.2), 25, 0.5, 0, 8);
|
||||
}
|
||||
|
||||
.password-title {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 26px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.25), 4, 0.6, 2, 2);
|
||||
}
|
||||
|
||||
.password-security-tip {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 13px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.1);
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 10px 15px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.2);
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
.password-textfield {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.95);
|
||||
-fx-border-color: rgba(186, 104, 200, 0.5);
|
||||
-fx-border-radius: 15px;
|
||||
-fx-background-radius: 15px;
|
||||
-fx-padding: 12px 16px;
|
||||
-fx-font-size: 14px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.2, 2, 2);
|
||||
}
|
||||
|
||||
.password-textfield:focused {
|
||||
-fx-border-color: rgba(156, 39, 176, 0.8);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.3), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.password-primary-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 16px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 2px;
|
||||
-fx-padding: 12px 24px;
|
||||
-fx-min-width: 150px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.password-primary-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.6), 10, 0.4, 3, 3);
|
||||
-fx-scale-x: 1.05;
|
||||
-fx-scale-y: 1.05;
|
||||
}
|
||||
|
||||
.password-secondary-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff59d, #ffeb3b);
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 20px;
|
||||
-fx-border-radius: 20px;
|
||||
-fx-border-color: #ffeb3b;
|
||||
-fx-border-width: 1px;
|
||||
-fx-padding: 10px 20px;
|
||||
-fx-min-width: 150px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 235, 59, 0.4), 6, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.password-secondary-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #fff9c4, #fff59d);
|
||||
-fx-effect: dropshadow(gaussian, rgba(255, 235, 59, 0.6), 8, 0.4, 2, 2);
|
||||
}
|
||||
|
||||
/* ===== 修改密码界面状态标签样式 - 修复换行版本 ===== */
|
||||
.password-status-label {
|
||||
-fx-text-fill: transparent;
|
||||
-fx-font-size: 13px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 0px;
|
||||
-fx-border-color: transparent;
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-width: 0px;
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-min-height: 0px;
|
||||
-fx-pref-height: 0px;
|
||||
-fx-max-width: 300px;
|
||||
}
|
||||
|
||||
.password-status-label-with-text {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 13px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.15);
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 10px 15px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.3);
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-min-height: 60px;
|
||||
-fx-pref-height: 60px;
|
||||
-fx-max-width: 300px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
/* ===== 设置密码界面专用样式 - 淡黄色和淡紫色主题 ===== */
|
||||
.setpassword-background {
|
||||
-fx-background-image: url('../images/background.png');
|
||||
-fx-background-size: cover;
|
||||
-fx-background-position: center center;
|
||||
-fx-background-repeat: no-repeat;
|
||||
-fx-background-color: linear-gradient(to bottom right, #fff9c4, #f3e5f5);
|
||||
}
|
||||
|
||||
.setpassword-glass-panel {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.88);
|
||||
-fx-background-radius: 30px;
|
||||
-fx-border-radius: 30px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.4);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.2), 25, 0.5, 0, 8);
|
||||
}
|
||||
|
||||
.setpassword-title {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-weight: bold;
|
||||
-fx-font-size: 26px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(123, 31, 162, 0.25), 4, 0.6, 2, 2);
|
||||
}
|
||||
|
||||
.setpassword-prompt {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.1);
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 10px 15px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.2);
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
.setpassword-textfield {
|
||||
-fx-background-color: rgba(255, 255, 255, 0.95);
|
||||
-fx-border-color: rgba(186, 104, 200, 0.5);
|
||||
-fx-border-radius: 15px;
|
||||
-fx-background-radius: 15px;
|
||||
-fx-padding: 12px 16px;
|
||||
-fx-font-size: 14px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.2, 2, 2);
|
||||
}
|
||||
|
||||
.setpassword-textfield:focused {
|
||||
-fx-border-color: rgba(156, 39, 176, 0.8);
|
||||
-fx-border-width: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(156, 39, 176, 0.3), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.setpassword-primary-button {
|
||||
-fx-background-color: linear-gradient(to bottom, #ba68c8, #ab47bc);
|
||||
-fx-text-fill: white;
|
||||
-fx-font-size: 16px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-background-radius: 25px;
|
||||
-fx-border-radius: 25px;
|
||||
-fx-border-color: #ab47bc;
|
||||
-fx-border-width: 2px;
|
||||
-fx-padding: 12px 24px;
|
||||
-fx-min-width: 150px;
|
||||
-fx-cursor: hand;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.4), 8, 0.3, 2, 2);
|
||||
}
|
||||
|
||||
.setpassword-primary-button:hover {
|
||||
-fx-background-color: linear-gradient(to bottom, #ce93d8, #ba68c8);
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.6), 10, 0.4, 3, 3);
|
||||
-fx-scale-x: 1.05;
|
||||
-fx-scale-y: 1.05;
|
||||
}
|
||||
|
||||
/* ===== 设置密码界面状态标签样式 - 修复页面滑动 ===== */
|
||||
.setpassword-status-label {
|
||||
-fx-text-fill: transparent;
|
||||
-fx-font-size: 12px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 0px;
|
||||
-fx-border-color: transparent;
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-width: 0px;
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-min-height: 70px;
|
||||
-fx-pref-height: 70px;
|
||||
-fx-max-width: 280px;
|
||||
-fx-line-spacing: 2px;
|
||||
}
|
||||
|
||||
.setpassword-status-label-with-text {
|
||||
-fx-text-fill: #7b1fa2;
|
||||
-fx-font-size: 12px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-wrap-text: true;
|
||||
-fx-background-color: rgba(186, 104, 200, 0.15);
|
||||
-fx-background-radius: 10px;
|
||||
-fx-padding: 12px 15px;
|
||||
-fx-border-color: rgba(186, 104, 200, 0.3);
|
||||
-fx-border-radius: 10px;
|
||||
-fx-border-width: 1px;
|
||||
-fx-alignment: center;
|
||||
-fx-text-alignment: center;
|
||||
-fx-min-height: 70px;
|
||||
-fx-pref-height: 70px;
|
||||
-fx-max-width: 280px;
|
||||
-fx-line-spacing: 2px;
|
||||
-fx-effect: dropshadow(gaussian, rgba(186, 104, 200, 0.2), 6, 0.3, 2, 2);
|
||||
}
|
||||
/* ===== 表单字段标签 (新增) ===== */
|
||||
.form-label {
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: bold;
|
||||
-fx-text-fill: #7b1fa2; /* 使用与标题一致的紫色 */
|
||||
-fx-padding: 0 0 4px 8px; /* 在标签下方和左侧留出一点空间 */
|
||||
}
|
||||