├── src └── main │ ├── resources │ ├── club │ │ └── xiaojiawei │ │ │ ├── test │ │ │ ├── ColorTest.css │ │ │ ├── application.properties │ │ │ ├── application_us.properties │ │ │ ├── AdaptationTest.css │ │ │ ├── ColorTest.fxml │ │ │ ├── PropertiesTest.fxml │ │ │ └── FxmlTest.fxml │ │ │ ├── controls │ │ │ ├── css │ │ │ │ ├── progressModal.css │ │ │ │ ├── common │ │ │ │ │ ├── hyperlink.css │ │ │ │ │ ├── title.css │ │ │ │ │ ├── date-time-common.css │ │ │ │ │ ├── toggle-button.css │ │ │ │ │ ├── menu-item.css │ │ │ │ │ ├── menu.css │ │ │ │ │ ├── text-area.css │ │ │ │ │ ├── progress.css │ │ │ │ │ ├── javafx-ui.css │ │ │ │ │ ├── context-menu.css │ │ │ │ │ ├── text-filed.css │ │ │ │ │ ├── tree-view.css │ │ │ │ │ ├── menu-bar.css │ │ │ │ │ └── list-view.css │ │ │ │ ├── windowBar.css │ │ │ │ ├── switch.css │ │ │ │ ├── messageBox.css │ │ │ │ ├── fileUploader.css │ │ │ │ ├── tableFilterManager.css │ │ │ │ ├── carousel.css │ │ │ │ ├── dateSelector.css │ │ │ │ ├── timeSelector.css │ │ │ │ └── date.css │ │ │ ├── images │ │ │ │ ├── StopIco.svg │ │ │ │ ├── NextIco.svg │ │ │ │ ├── StartIco.svg │ │ │ │ ├── PinnedIco.svg │ │ │ │ ├── PauseIco.svg │ │ │ │ ├── PlaybackIco.svg │ │ │ │ ├── DateIco.svg │ │ │ │ ├── PersonIco.svg │ │ │ │ ├── TimeIco.svg │ │ │ │ ├── DesktopIco.svg │ │ │ │ ├── DirIco.svg │ │ │ │ ├── InvisibleIco.svg │ │ │ │ ├── FilterIco.svg │ │ │ │ ├── FloatIco.svg │ │ │ │ ├── CloseIco.svg │ │ │ │ ├── FlashOnIco.svg │ │ │ │ ├── LockIco.svg │ │ │ │ ├── NextPageIco.svg │ │ │ │ ├── FlushIco.svg │ │ │ │ ├── HomeIco.svg │ │ │ │ ├── UpdateIco.svg │ │ │ │ ├── TrendIco.svg │ │ │ │ ├── MoveUpIco.svg │ │ │ │ ├── MoveDownIco.svg │ │ │ │ ├── PinterIco.svg │ │ │ │ ├── GiteeIco.svg │ │ │ │ ├── LinkDirIco.svg │ │ │ │ ├── WarnIco.svg │ │ │ │ ├── FlashOffIco.svg │ │ │ │ ├── EditIco.svg │ │ │ │ ├── SaveIco.svg │ │ │ │ ├── FailIco.svg │ │ │ │ ├── VideoIco.svg │ │ │ │ ├── NewDirIco.svg │ │ │ │ ├── ImportIco.svg │ │ │ │ ├── UnknowFileIco.svg │ │ │ │ ├── VisibleIco.svg │ │ │ │ ├── ExportIco.svg │ │ │ │ ├── RecordingIco.svg │ │ │ │ ├── GithubIco.svg │ │ │ │ ├── LungIco.svg │ │ │ │ ├── UploadIco.svg │ │ │ │ ├── MessageIco.svg │ │ │ │ ├── TransmissionIco.svg │ │ │ │ ├── EventIco.svg │ │ │ │ ├── FoldUpIco.svg │ │ │ │ ├── OKIco.svg │ │ │ │ ├── AutoMeasureIco.svg │ │ │ │ ├── ShrinkIco.svg │ │ │ │ ├── EnlargeIco.svg │ │ │ │ ├── BrokenLineIco.svg │ │ │ │ ├── RulerIco.svg │ │ │ │ ├── ScreenshotIco.svg │ │ │ │ └── LampIco.svg │ │ │ ├── FileUploader.fxml │ │ │ ├── Carousel.fxml │ │ │ ├── DateSelector.fxml │ │ │ ├── TableFilterManager.fxml │ │ │ ├── TimeSelector.fxml │ │ │ ├── MessageBox.fxml │ │ │ ├── Switch.fxml │ │ │ ├── DateTime.fxml │ │ │ ├── Notification.fxml │ │ │ ├── Date.fxml │ │ │ ├── Time.fxml │ │ │ └── WindowBar.fxml │ │ │ ├── demo │ │ │ ├── demo.png │ │ │ └── tab │ │ │ │ ├── images │ │ │ │ ├── carousel2.jpg │ │ │ │ ├── carousel4.jpg │ │ │ │ ├── carousel6.jpg │ │ │ │ └── carousel7.jpg │ │ │ │ ├── controls │ │ │ │ ├── CalendarTab.fxml │ │ │ │ ├── DateSelectorTab.fxml │ │ │ │ ├── TitleTab.fxml │ │ │ │ ├── WindowBarTab.fxml │ │ │ │ ├── TimeSelectorTab.fxml │ │ │ │ ├── ModalTab.fxml │ │ │ │ ├── CopyLabelTab.fxml │ │ │ │ ├── IconsTab.fxml │ │ │ │ └── DateTab.fxml │ │ │ │ └── style │ │ │ │ ├── AccordionTab.fxml │ │ │ │ ├── TextAreaTab.fxml │ │ │ │ ├── ToggleButtonTab.fxml │ │ │ │ ├── TextFieldTab.fxml │ │ │ │ └── ContextMenuTab.fxml │ │ │ └── component │ │ │ ├── css │ │ │ ├── tableDateFilter.css │ │ │ ├── tableValueFilter.css │ │ │ └── fileUploaderItem.css │ │ │ └── FileUploaderItem.fxml │ ├── META-INF │ │ └── services │ │ │ └── club.xiaojiawei.controls.AbstractTableFilterManager │ └── log4j.properties │ └── java │ └── club │ └── xiaojiawei │ ├── bean │ ├── package.html │ ├── LogRunnable.java │ └── FileChooserFilter.java │ ├── config │ ├── package.html │ └── JavaFXUIThreadPoolConfig.java │ ├── enums │ ├── package.html │ ├── SizeEnum.java │ ├── NotificationPosEnum.java │ ├── StylesheetEnum.java │ └── NotificationTypeEnum.java │ ├── factory │ └── package.html │ ├── skin │ ├── package.html │ ├── VisibleTreeViewSkin.java │ └── NumberFieldSkin.java │ ├── test │ ├── package.html │ ├── MySwitch.java │ ├── MyCollections.java │ ├── FXArrayList.java │ ├── ImportIcoTest.java │ ├── LabelUITest.java │ ├── FxmlTest.java │ ├── Test.java │ ├── PasswordShowFieldTest.java │ ├── FilterFieldTest.java │ ├── CalendarTest.java │ ├── DateSelectorTest.java │ ├── InputTest.java │ └── TranslateTest.java │ ├── utils │ └── package.html │ ├── annotations │ ├── package.html │ ├── OnlyOnce.java │ ├── NotNull.java │ ├── Nullable.java │ └── ValidSizeRange.java │ ├── component │ ├── package.html │ ├── TableCheckFilter.java │ └── IconTextField.java │ ├── controls │ ├── ico │ │ ├── package.html │ │ ├── AddIco.java │ │ ├── CutIco.java │ │ ├── DirIco.java │ │ ├── NetIco.java │ │ ├── RulerIco.java │ │ ├── CopyIco.java │ │ ├── EditIco.java │ │ ├── GiteeIco.java │ │ ├── HomeIco.java │ │ ├── LockIco.java │ │ ├── LungIco.java │ │ ├── MoveUpIco.java │ │ ├── NextIco.java │ │ ├── SaveIco.java │ │ ├── EnlargeIco.java │ │ ├── ExportIco.java │ │ ├── FilterIco.java │ │ ├── FloatIco.java │ │ ├── GithubIco.java │ │ ├── ImportIco.java │ │ ├── MeasureIco.java │ │ ├── NewDirIco.java │ │ ├── ShrinkIco.java │ │ ├── UploadIco.java │ │ ├── VideoIco.java │ │ ├── DesktopIco.java │ │ ├── LinkDirIco.java │ │ ├── LoadingIco.java │ │ ├── PreviewIco.java │ │ ├── MoveDownIco.java │ │ ├── AutoMeasureIco.java │ │ ├── BrokenLineIco.java │ │ ├── UnknowFileIco.java │ │ ├── TransmissionIco.java │ │ ├── OKIco.java │ │ ├── ClearIco.java │ │ ├── DateIco.java │ │ ├── ExitIco.java │ │ ├── FailIco.java │ │ ├── FileIco.java │ │ ├── HelpIco.java │ │ ├── LampIco.java │ │ ├── StopIco.java │ │ ├── TimeIco.java │ │ ├── WarnIco.java │ │ ├── CloseIco.java │ │ ├── EventIco.java │ │ ├── FlushIco.java │ │ ├── PauseIco.java │ │ ├── TrendIco.java │ │ ├── BrainIco.java │ │ ├── FoldUpIco.java │ │ ├── OnlineIco.java │ │ ├── PersonIco.java │ │ ├── PinnedIco.java │ │ ├── RecordIco.java │ │ ├── UpdateIco.java │ │ ├── FlashOnIco.java │ │ ├── MessageIco.java │ │ ├── OfflineIco.java │ │ ├── PinterIco.java │ │ ├── SettingsIco.java │ │ ├── VisibleIco.java │ │ ├── AddPersonIco.java │ │ ├── FlashOffIco.java │ │ ├── InvisibleIco.java │ │ ├── NextPageIco.java │ │ ├── PlaybackIco.java │ │ ├── RecordingIco.java │ │ ├── ResistanceIco.java │ │ ├── ScreenshotIco.java │ │ ├── HyperventilationIco.java │ │ └── StartIco.java │ ├── package.html │ ├── images │ │ └── ImagesLoader.java │ ├── Title.java │ ├── VisibleTreeView.java │ ├── TableValueFilterManager.java │ ├── TableCheckFilterManager.java │ ├── FilterComboBox.java │ └── PasswordTextField.java │ ├── func │ ├── package.html │ ├── MarkLogging.java │ ├── FilterAction.java │ ├── BaseTransition.java │ └── DateTimeInterceptor.java │ └── demo │ ├── tab │ ├── style │ │ ├── package.html │ │ └── ContextMenuController.java │ └── controls │ │ ├── package.html │ │ ├── NumberFieldController.java │ │ ├── ModalController.java │ │ └── CarouselController.java │ ├── component │ └── package.html │ └── package.html ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── .gitignore ├── README.md └── .github └── workflows └── build.yml /src/main/resources/club/xiaojiawei/test/ColorTest.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/progressModal.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/test/application.properties: -------------------------------------------------------------------------------- 1 | version=版本 -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/test/application_us.properties: -------------------------------------------------------------------------------- 1 | version=version -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/bean/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

bean包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/config/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

配置包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/enums/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

枚举包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/factory/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

工厂包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/skin/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

皮肤包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/test/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

测试包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/utils/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

工具包 4 | 5 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/test/AdaptationTest.css: -------------------------------------------------------------------------------- 1 | .btn-ui{ 2 | /*-fx-min-width: 70;*/ 3 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/annotations/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

注解包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/component/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

内部组件包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/controls/ico/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

图标包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/controls/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

外部组件包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/func/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

自定义函数式接口包 4 | 5 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xjw580/javafx-ui/HEAD/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/demo/tab/style/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

demo组件包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/demo/component/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

demo样式控制器包 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/demo/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

展示包-可以看到所有组件和样式的Demo 4 | 5 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/demo/tab/controls/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

demo控件控制器包 4 | 5 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xjw580/javafx-ui/HEAD/src/main/resources/club/xiaojiawei/demo/demo.png -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/hyperlink.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | 3 | .hyperlink { 4 | -fx-accent: main-color; 5 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/windowBar.css: -------------------------------------------------------------------------------- 1 | .close-ico:hover *{ 2 | -fx-fill: red; 3 | } 4 | .pinned-ico:hover *{ 5 | -fx-fill: black; 6 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/images/carousel2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xjw580/javafx-ui/HEAD/src/main/resources/club/xiaojiawei/demo/tab/images/carousel2.jpg -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/images/carousel4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xjw580/javafx-ui/HEAD/src/main/resources/club/xiaojiawei/demo/tab/images/carousel4.jpg -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/images/carousel6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xjw580/javafx-ui/HEAD/src/main/resources/club/xiaojiawei/demo/tab/images/carousel6.jpg -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/images/carousel7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xjw580/javafx-ui/HEAD/src/main/resources/club/xiaojiawei/demo/tab/images/carousel7.jpg -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/switch.css: -------------------------------------------------------------------------------- 1 | #bgRectangle{ 2 | -fx-fill: #E6E6E6; 3 | } 4 | #switchRectangle{ 5 | -fx-fill: main-color; 6 | } 7 | #switchCircle{ 8 | -fx-fill: white; 9 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/func/MarkLogging.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.func; 2 | 3 | /** 4 | * @author 肖嘉威 xjw580@qq.com 5 | * @date 2024/7/29 15:22 6 | */ 7 | public interface MarkLogging { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/messageBox.css: -------------------------------------------------------------------------------- 1 | #msg{ 2 | -fx-background-color: normal-color; 3 | -fx-padding: 8; 4 | -fx-background-radius: 6 5 | } 6 | #triangle{ 7 | -fx-fill: normal-color 8 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/controls/images/ImagesLoader.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.controls.images; 2 | 3 | /** 4 | * @author 肖嘉威 xjw580@qq.com 5 | * @date 2023/10/31 0:21 6 | */ 7 | public class ImagesLoader { 8 | } 9 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/services/club.xiaojiawei.controls.AbstractTableFilterManager: -------------------------------------------------------------------------------- 1 | club.xiaojiawei.controls.TableValueFilterManager 2 | club.xiaojiawei.controls.TableDateFilterManager 3 | club.xiaojiawei.controls.TableCheckFilterManager -------------------------------------------------------------------------------- /src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=WARN, stdout 2 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 3 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 4 | log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/test/MySwitch.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.test; 2 | 3 | import club.xiaojiawei.controls.Switch; 4 | 5 | /** 6 | * @author 肖嘉威 7 | * @date 2025/3/30 22:23 8 | */ 9 | public class MySwitch extends Switch { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/func/FilterAction.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.func; 2 | 3 | /** 4 | * @author 肖嘉威 xjw580@qq.com 5 | * @date 2024/2/22 16:17 6 | */ 7 | public interface FilterAction{ 8 | 9 | void handle(String text); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/component/css/tableDateFilter.css: -------------------------------------------------------------------------------- 1 | .table-date-filter-root-pane{ 2 | -fx-alignment: CENTER; 3 | -fx-pref-width: 275; 4 | } 5 | .contentHBox{ 6 | -fx-spacing: 5; 7 | } 8 | .timeFlowPane{ 9 | -fx-padding: 10; 10 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/title.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | .title-ui{ 3 | -fx-background-color: #e8f0fe; 4 | -fx-padding: 13 50 13 13; 5 | -fx-fill: #1c74e8; 6 | -fx-background-radius: 0 19 19 0; 7 | } 8 | .title-ui *{ 9 | -fx-fill: #1c74e8; 10 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/enums/SizeEnum.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.enums; 2 | 3 | /** 4 | * @author 肖嘉威 xjw580@qq.com 5 | * @date 2024/1/6 22:22 6 | */ 7 | public enum SizeEnum { 8 | 9 | BIG, 10 | 11 | MEDDLE, 12 | 13 | SMALL, 14 | 15 | TINY, 16 | 17 | DEFAULT 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/fileUploader.css: -------------------------------------------------------------------------------- 1 | #FileUploader{ 2 | -fx-padding: 15; 3 | -fx-border-radius: 3; 4 | -fx-cursor: hand; 5 | -fx-border-style: dashed; 6 | -fx-background-color: #fbfbfb; 7 | -fx-border-color: grey; 8 | -fx-alignment: CENTER; 9 | -fx-hgap: 15; 10 | -fx-vgap: 15; 11 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/tableFilterManager.css: -------------------------------------------------------------------------------- 1 | .filterBtn{ 2 | -fx-padding: 1; 3 | -fx-background-color: transparent; 4 | -fx-border-width: 0; 5 | -fx-cursor: hand; 6 | } 7 | .filterBtn:hover .javafx-ui-ico *{ 8 | -fx-fill: black; 9 | } 10 | .filteringBtn .javafx-ui-ico *{ 11 | -fx-fill: #56a86b!important; 12 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/annotations/OnlyOnce.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.annotations; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 该方法只能调用一次或调用多次不生效 7 | * @author 肖嘉威 xjw580@qq.com 8 | * @date 2024/5/11 11:59 9 | */ 10 | @Documented 11 | @Retention(RetentionPolicy.CLASS) 12 | @Target({ElementType.METHOD}) 13 | public @interface OnlyOnce { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/enums/NotificationPosEnum.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.enums; 2 | 3 | /** 4 | * @author 肖嘉威 xjw580@qq.com 5 | * @date 2024/1/2 9:10 6 | */ 7 | public enum NotificationPosEnum { 8 | 9 | TOP_LEFT, 10 | TOP_RIGHT, 11 | BOTTOM_LEFT, 12 | BOTTOM_RIGHT, 13 | TOP_CENTER, 14 | BOTTOM_CENTER, 15 | CENTER 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/component/css/tableValueFilter.css: -------------------------------------------------------------------------------- 1 | .table-filter-root-pane{ 2 | -fx-pref-width: 220; 3 | } 4 | #contentPane{ 5 | -fx-spacing: 10; 6 | -fx-padding: 0 2 0 2; 7 | } 8 | .table-view-ui *{ 9 | -fx-font-size: 12; 10 | -fx-font-weight: none; 11 | } 12 | .table-view-ui .scroll-bar:horizontal { 13 | -fx-opacity: 0; 14 | -fx-pref-width: 0!important; 15 | -fx-pref-height: 0!important; 16 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/annotations/NotNull.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.annotations; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 不为空 7 | * @author 肖嘉威 xjw580@qq.com 8 | * @date 2024/5/11 11:59 9 | */ 10 | @Documented 11 | @Retention(RetentionPolicy.CLASS) 12 | @Target({ElementType.TYPE_USE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE}) 13 | public @interface NotNull { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/annotations/Nullable.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.annotations; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 可能为空 7 | * @author 肖嘉威 xjw580@qq.com 8 | * @date 2024/5/11 11:59 9 | */ 10 | @Documented 11 | @Retention(RetentionPolicy.CLASS) 12 | @Target({ElementType.TYPE_USE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE}) 13 | public @interface Nullable { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/date-time-common.css: -------------------------------------------------------------------------------- 1 | .rightAngleBackground{ 2 | -fx-border-radius: 4!important; 3 | -fx-background-radius: 4!important; 4 | } 5 | .time-small-background{ 6 | -fx-pref-height: 24!important; 7 | -fx-border-radius: 12; 8 | -fx-background-radius: 12; 9 | } 10 | .time-big-background{ 11 | -fx-pref-height: 37!important; 12 | -fx-border-radius: 18; 13 | -fx-background-radius: 18; 14 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/func/BaseTransition.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.func; 2 | 3 | import javafx.animation.Transition; 4 | import javafx.scene.Node; 5 | import javafx.util.Duration; 6 | 7 | /** 8 | * @author 肖嘉威 xjw580@qq.com 9 | * @date 2023/10/23 10:05 10 | */ 11 | @FunctionalInterface 12 | public interface BaseTransition { 13 | Transition build(Node node, double from, double to, Duration duration, int cycleCount, boolean autoReverse); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/toggle-button.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | .toggle-btn-ui{ 3 | -fx-background-insets: 0; 4 | -fx-border-width: 0; 5 | -fx-background-radius: 0; 6 | -fx-background-color: white; 7 | -fx-padding: 10 15 10 15; 8 | } 9 | .toggle-btn-ui:hover{ 10 | -fx-background-color: hover-color; 11 | } 12 | .toggle-btn-ui:selected{ 13 | -fx-text-fill: white; 14 | -fx-background-color: main-color; 15 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/annotations/ValidSizeRange.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.annotations; 2 | 3 | import club.xiaojiawei.enums.SizeEnum; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * 标定有效尺寸范围 9 | * @author 肖嘉威 xjw580@qq.com 10 | * @date 2024/4/8 20:05 11 | */ 12 | @Documented 13 | @Target({ElementType.PARAMETER, ElementType.FIELD}) 14 | @Retention(RetentionPolicy.CLASS) 15 | public @interface ValidSizeRange { 16 | 17 | SizeEnum[] value(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/test/MyCollections.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.test; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author 肖嘉威 xjw580@qq.com 7 | * @date 2024/5/28 9:19 8 | */ 9 | public class MyCollections { 10 | 11 | public static FXArrayList buildList(E... strings){ 12 | return new FXArrayList<>(List.of(strings)); 13 | } 14 | 15 | public static FXArrayList buildList(){ 16 | return new FXArrayList<>(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/controls/CalendarTab.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/menu-item.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | 3 | .menu-item-ui:hover { 4 | -fx-background-color: hover-color; 5 | } 6 | 7 | .menu-item-ui { 8 | -fx-padding: 7 14 7 14; 9 | -fx-background-radius: 5; 10 | } 11 | 12 | /*Size*/ 13 | 14 | .menu-item-ui-small { 15 | -fx-padding: 4 8 4 8!important; 16 | -fx-background-radius: 4!important; 17 | } 18 | 19 | .menu-item-ui-big { 20 | -fx-padding: 10 20 10 20!important; 21 | -fx-background-radius: 6!important; 22 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/StopIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/controls/Title.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.controls; 2 | 3 | import javafx.scene.control.Label; 4 | import javafx.scene.shape.Rectangle; 5 | 6 | /** 7 | * 标题 8 | * @author 肖嘉威 xjw580@qq.com 9 | * @date 2023/11/23 17:04 10 | */ 11 | public class Title extends Label { 12 | public static final String DEFAULT_STYLE_CLASS = "title-ui"; 13 | public Title() { 14 | this(""); 15 | } 16 | 17 | public Title(String s) { 18 | super(s); 19 | getStyleClass().add(DEFAULT_STYLE_CLASS); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/controls/DateSelectorTab.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/menu.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | 3 | .menu-ui .text { 4 | -fx-fill: black; 5 | } 6 | 7 | .menu-ui:hover { 8 | -fx-background-color: normal-hover-color; 9 | } 10 | 11 | .menu-ui { 12 | -fx-padding: 7 14 7 14; 13 | -fx-background-radius: 5; 14 | } 15 | 16 | /*Size*/ 17 | 18 | .menu-ui-small { 19 | -fx-padding: 4 8 4 8!important; 20 | -fx-background-radius: 4!important; 21 | } 22 | 23 | .menu-ui-big { 24 | -fx-padding: 10 20 10 20!important; 25 | -fx-background-radius: 6!important; 26 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/test/ColorTest.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/FileUploader.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/bean/LogRunnable.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.bean; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | /** 6 | * @author 肖嘉威 7 | * @date 2023/7/8 16:19 8 | */ 9 | @Slf4j 10 | public class LogRunnable implements Runnable{ 11 | 12 | private final Runnable task; 13 | 14 | public LogRunnable(Runnable task) { 15 | this.task = task; 16 | } 17 | 18 | @Override 19 | public void run() { 20 | try { 21 | task.run(); 22 | }catch (Exception e){ 23 | log.error("Runnable发生错误" , e); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/text-area.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | .text-area-ui{ 3 | -fx-effect: default-press-effect; 4 | -fx-background-radius: 3; 5 | -fx-background-color: white; 6 | -fx-border-color: border-color; 7 | -fx-border-insets: 0 1 0 0; 8 | -fx-border-radius: 3; 9 | /*选中文本的颜色*/ 10 | -fx-accent: main-color; 11 | } 12 | .text-area-ui:focused{ 13 | -fx-border-color: transparent; 14 | -fx-effect: dropshadow(two-pass-box, main-color, 5, 0, 1, 1)!important; 15 | } 16 | .text-area-ui .content { 17 | -fx-background-insets: 0; 18 | -fx-background-color:white; 19 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/NextIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/progress.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | .progress-bar-ui { 3 | -fx-accent: main-color!important; 4 | } 5 | .progress-bar-ui .bar { 6 | -fx-background-insets: 0; 7 | -fx-background-radius: 0; 8 | } 9 | .progress-bar-ui > .track { 10 | -fx-border-radius: 0; 11 | -fx-background-radius: 0; 12 | -fx-text-box-border: transparent; 13 | -fx-control-inner-background: transparent; 14 | -fx-background-color: transparent; 15 | } 16 | .progress-indicator-ui{ 17 | -fx-accent: main-color!important; 18 | } 19 | .progress-indicator-ui .percentage { 20 | -fx-fill:null; 21 | } -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/test/FXArrayList.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.test; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collection; 5 | import java.util.List; 6 | 7 | /** 8 | * @author 肖嘉威 xjw580@qq.com 9 | * @date 2024/5/28 9:15 10 | */ 11 | public class FXArrayList extends ArrayList { 12 | 13 | public FXArrayList(Collection c) { 14 | super(c); 15 | } 16 | 17 | public FXArrayList() { 18 | } 19 | 20 | public boolean addAll(E... elements){ 21 | return true; 22 | } 23 | 24 | public boolean setAll(E... elements){ 25 | return true; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/StartIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/PinnedIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | *.iws 8 | *.iml 9 | *.ipr 10 | 11 | ### Eclipse ### 12 | .apt_generated 13 | .classpath 14 | .factorypath 15 | .project 16 | .settings 17 | .springBeans 18 | .sts4-cache 19 | 20 | ### NetBeans ### 21 | /nbproject/private/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ 26 | build/ 27 | !**/src/main/**/build/ 28 | !**/src/test/**/build/ 29 | 30 | ### VS Code ### 31 | .vscode/ 32 | 33 | ### Mac OS ### 34 | .DS_Store 35 | /src/test/ 36 | /.idea/ 37 | 38 | 39 | ### Custom ### 40 | *.exe 41 | /easy-release_static/ 42 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/PauseIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/PlaybackIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/controls/TitleTab.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | <Title text="一见杨过误终身"/> 13 | <Title text="只恨我生君已老"/> 14 | <Title text="断肠崖前忆故人"/> 15 | </VBox> 16 | </VBox> 17 | </ScrollPane> -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/DateIco.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 | <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 | viewBox="0 0 12.7 14" style="enable-background:new 0 0 12.7 14;" xml:space="preserve"> 5 | <style type="text/css"> 6 | .st0{fill:#0075FF;} 7 | </style> 8 | <path class="st0" d="M11.5,1.3h-0.6V0H9.5v1.3H3.2V0H1.9v1.3H1.3C0.6,1.3,0,1.8,0,2.5v10.2C0,13.4,0.6,14,1.3,14h10.2 9 | c0.7,0,1.3-0.6,1.3-1.3V2.5C12.7,1.8,12.2,1.3,11.5,1.3z M11.5,12.7H1.3V4.5h10.2V12.7z"/> 10 | </svg> 11 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/PersonIco.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <svg id="_图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12.1 14"> 3 | <defs> 4 | <style> 5 | .cls-1 { 6 | fill: #0075FF; 7 | } 8 | </style> 9 | </defs> 10 | <path class="cls-1" d="M6.05,6.5c1.8,0,3.26-1.46,3.26-3.25S7.84,0,6.05,0,2.79,1.46,2.79,3.25s1.46,3.25,3.26,3.25h0Zm5.57,3.72c-.3-.72-.74-1.36-1.3-1.92-.56-.55-1.2-.99-1.92-1.3-.75-.32-1.54-.48-2.35-.48s-1.6,.16-2.35,.48c-.72,.3-1.37,.74-1.92,1.3-.56,.55-.99,1.2-1.3,1.92-.32,.74-.48,1.53-.48,2.34v.64c0,.44,.35,.79,.79,.79H11.31c.44,0,.79-.35,.79-.79v-.64c0-.81-.16-1.6-.48-2.34h0Zm0,0"/> 11 | </svg> -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/TimeIco.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 | <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 | viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve"> 5 | <style type="text/css"> 6 | .st0{fill:#0075FF;} 7 | </style> 8 | <path class="st0" d="M7,0C3.1,0,0,3.1,0,7s3.1,7,7,7c3.9,0,7-3.1,7-7S10.9,0,7,0z M7,12.6c-3.1,0-5.6-2.5-5.6-5.6S3.9,1.4,7,1.4 9 | s5.6,2.5,5.6,5.6S10.1,12.6,7,12.6z"/> 10 | <path class="st0" d="M7.3,3.5h-1v4.2L10,9.9L10.5,9L7.3,7.2V3.5z"/> 11 | </svg> 12 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/Carousel.fxml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | 3 | <?import club.xiaojiawei.controls.ico.NextIco?> 4 | <?import javafx.scene.layout.*?> 5 | <fx:root type="AnchorPane" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" 6 | fx:id="rootPane" 7 | stylesheets="@css/carousel.css"> 8 | <AnchorPane fx:id="imagesPane"/> 9 | <HBox fx:id="left" AnchorPane.leftAnchor="5" rotate="180"> 10 | <NextIco color="#ECEBEB"/> 11 | </HBox> 12 | <HBox fx:id="right" AnchorPane.rightAnchor="5"> 13 | <NextIco color="#ECEBEB"/> 14 | </HBox> 15 | <HBox fx:id="dots" AnchorPane.bottomAnchor="0" alignment="CENTER" spacing="10"/> 16 | </fx:root> -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/carousel.css: -------------------------------------------------------------------------------- 1 | .image{ 2 | -fx-background-size: cover ; 3 | } 4 | #left, #right{ 5 | visibility: false; 6 | -fx-alignment: CENTER; 7 | -fx-cursor: hand; 8 | -fx-padding: 9 0 9 0; 9 | -fx-pref-width: 30; 10 | -fx-background-radius: 15; 11 | -fx-background-color: rgba(128, 128, 128, 0.5); 12 | } 13 | #rootPane:hover > #left{ 14 | visibility: true; 15 | } 16 | #rootPane:hover > #right{ 17 | visibility: true; 18 | } 19 | #rootPane{ 20 | -fx-pref-height: 265; 21 | } 22 | .dot{ 23 | -fx-cursor: hand; 24 | -fx-fill: #e5e5e5; 25 | } 26 | .dot:hover{ 27 | -fx-fill: effect-color; 28 | } 29 | .currentDot{ 30 | -fx-fill: main-color!important; 31 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/DesktopIco.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 | <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 | viewBox="0 0 16 14" style="enable-background:new 0 0 16 14;" xml:space="preserve"> 5 | <style type="text/css"> 6 | .st0{fill:black;} 7 | </style> 8 | <path class="st0" d="M14.8,0C15.5,0,16,0.6,16,1.3v7.4c0,0.7-0.5,1.3-1.2,1.3H8.6v2.6H11c0.3,0,0.6,0.3,0.6,0.7S11.3,14,11,14H5 9 | c-0.3,0-0.6-0.3-0.6-0.7s0.3-0.7,0.6-0.7h2.4v-2.6H1.2C0.5,10.1,0,9.5,0,8.8V1.3C0,0.6,0.5,0,1.2,0C1.2,0,14.8,0,14.8,0z"/> 10 | </svg> 11 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/DirIco.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 | <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 | viewBox="0 0 15.1 14" style="enable-background:new 0 0 15.1 14;" xml:space="preserve"> 5 | <path d="M13.4,2.2H6.1L5.1,0.3C5.1,0.1,4.8,0,4.6,0H1.7C0.9,0,0,0.8,0,1.6v10.8C0,13.2,0.9,14,1.7,14h11.6c1,0,1.7-0.8,1.7-1.6V3.8 6 | C15.1,2.9,14.2,2.2,13.4,2.2z M13.9,12.4c0,0.3-0.2,0.5-0.5,0.5H1.7c-0.3,0-0.5-0.2-0.5-0.5V1.6c0-0.3,0.2-0.5,0.5-0.5h2.6l1.1,1.8 7 | c0,0.2,0.2,0.3,0.4,0.3h7.5c0.3,0,0.5,0.2,0.5,0.5V12.4z"/> 8 | </svg> 9 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/InvisibleIco.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 | <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 | viewBox="0 0 20 14" style="enable-background:new 0 0 20 14;" xml:space="preserve"> 5 | <path d="M7.9,13.2l1.8-1.8h0.2c3.1,0.1,6.1-1.4,7.8-4c-0.6-0.8-1.3-1.5-2-2.1L17.2,4c1.1,1,2.1,2.1,2.8,3.4c-1.9,3.7-5.8,6-10,5.9 6 | C9.3,13.4,8.6,13.3,7.9,13.2L7.9,13.2z M2.3,10.4C1.4,9.5,0.6,8.5,0,7.4c1.9-3.7,5.8-6,10-5.9h1.1l-2,2c-2.8,0.1-5.4,1.6-7,3.9 7 | C2.5,8,3,8.5,3.5,9L2.3,10.4z M15.7,0l1.4,1.4L4.5,14l-1.4-1.4L15.7,0z"/> 8 | </svg> 9 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/controls/VisibleTreeView.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.controls; 2 | 3 | import club.xiaojiawei.skin.VisibleTreeViewSkin; 4 | import javafx.scene.control.Skin; 5 | import javafx.scene.control.TreeView; 6 | 7 | /** 8 | * @author 肖嘉威 9 | * @date 2024/12/12 10:19 10 | */ 11 | public class VisibleTreeView<T> extends TreeView<T> { 12 | 13 | private VisibleTreeViewSkin<?> visibleTreeViewSkin; 14 | 15 | @Override 16 | protected Skin<?> createDefaultSkin() { 17 | return visibleTreeViewSkin = new VisibleTreeViewSkin<>(this); 18 | } 19 | 20 | public boolean isIndexVisible(int index) { 21 | return visibleTreeViewSkin != null && visibleTreeViewSkin.isIndexVisible(index); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/enums/StylesheetEnum.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.enums; 2 | 3 | /** 4 | * @author 肖嘉威 xjw580@qq.com 5 | * @date 2024/3/7 10:59 6 | */ 7 | public enum StylesheetEnum { 8 | /** 9 | * 通用样式表,一般不需要自行添加 10 | */ 11 | COMMON(), 12 | 13 | ACCORDION(), 14 | 15 | BUTTON(), 16 | 17 | CHECK_BOX(), 18 | 19 | COMBO_BOX(), 20 | 21 | CONTEXT_MENU(), 22 | 23 | JAVAFX_UI(), 24 | 25 | LABEL(), 26 | 27 | PROGRESS(), 28 | 29 | RADIO_BUTTON(), 30 | 31 | SCROLL_BAR(), 32 | 33 | TAB_PANE(), 34 | 35 | TABLE_VIEW(), 36 | 37 | TEXT_AREA(), 38 | 39 | TEXT_FILED(), 40 | 41 | TITLE(), 42 | 43 | TITLED_PANE(), 44 | 45 | TOGGLE_BUTTON(), 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/DateSelector.fxml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | 3 | <?import javafx.scene.control.Accordion?> 4 | <?import javafx.scene.control.ScrollBar?> 5 | <?import javafx.scene.control.ScrollPane?> 6 | <?import javafx.scene.layout.HBox?> 7 | <fx:root type="HBox" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" stylesheets="@css/dateSelector.css, @css/common/scroll-bar.css, @css/common/titled-pane.css" 8 | fx:id="root" prefWidth="180" prefHeight="222"> 9 | <ScrollPane styleClass="dateSelectorScrollPane" fx:id="scrollPane"> 10 | <Accordion fx:id="yearsPane"/> 11 | </ScrollPane> 12 | <ScrollBar fx:id="scrollBar" orientation="VERTICAL" value="50"/> 13 | </fx:root> 14 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/component/css/fileUploaderItem.css: -------------------------------------------------------------------------------- 1 | #fileUploaderItem{ 2 | -fx-background-size: cover; 3 | -fx-effect: dropshadow(gaussian, rgba(128, 128, 128, 1), 5, 0, 0, 0); 4 | -fx-background-color: white; 5 | } 6 | #fileUploaderItem #msgOuter{ 7 | -fx-spacing: 8; 8 | -fx-padding: 8 0 0 0 9 | } 10 | #fileUploaderItem #closeIcoOuter{ 11 | -fx-padding: 3; 12 | -fx-background-color: rgba(255, 255, 255, 0.8); 13 | -fx-background-radius: 9; 14 | -fx-alignment: CENTER; 15 | } 16 | #fileUploaderItem #fileNameLabel, #fileUploaderItem #fileSizeLabel{ 17 | -fx-background-color: rgba(255, 255, 255, 0.8); 18 | -fx-effect: default-effect; 19 | -fx-background-radius: 10; 20 | -fx-padding: 1 5 1 5; 21 | } -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/FilterIco.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 | <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 | viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve"> 5 | <title>FilterIco 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/demo/tab/controls/WindowBarTab.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 16 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/TableFilterManager.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 19 | 20 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/css/common/javafx-ui.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | @import "scroll-bar.css"; 3 | @import "titled-pane.css"; 4 | @import "button.css"; 5 | @import "combo-box.css"; 6 | @import "progress.css"; 7 | @import "check-box.css"; 8 | @import "radio-button.css"; 9 | @import "tab-pane.css"; 10 | @import "accordion.css"; 11 | @import "toggle-button.css"; 12 | @import "text-filed.css"; 13 | @import "text-area.css"; 14 | @import "title.css"; 15 | @import "table-view.css"; 16 | @import "label.css"; 17 | @import "context-menu.css"; 18 | @import "context-menu.css"; 19 | @import "tree-view.css"; 20 | @import "pagination.css"; 21 | @import "menu-bar.css"; 22 | @import "menu-item.css"; 23 | @import "menu.css"; 24 | @import "hyperlink.css"; 25 | @import "list-view.css"; -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/FloatIco.svg: -------------------------------------------------------------------------------- 1 | FloatIco -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/CloseIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | CloseIco 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/controls/images/FlashOnIco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/main/java/club/xiaojiawei/demo/tab/controls/NumberFieldController.java: -------------------------------------------------------------------------------- 1 | package club.xiaojiawei.demo.tab.controls; 2 | 3 | import club.xiaojiawei.controls.NumberField; 4 | import javafx.fxml.FXML; 5 | 6 | /** 7 | * @author 肖嘉威 xjw580@qq.com 8 | * @date 2024/2/20 11:39 9 | */ 10 | public class NumberFieldController { 11 | 12 | @FXML 13 | private NumberField incrementNumberField; 14 | 15 | @FXML 16 | protected void incrementTenNumber(){ 17 | incrementNumberField.increment(10, true); 18 | } 19 | 20 | @FXML 21 | protected void incrementHundredNumber(){ 22 | incrementNumberField.increment(100, true); 23 | } 24 | 25 | @FXML 26 | protected void incrementThousandNumber(){ 27 | incrementNumberField.increment(1000, true); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/resources/club/xiaojiawei/test/PropertiesTest.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 |