From f6189b1bf990117d182cd6f7e1c9b824d6d34e1d Mon Sep 17 00:00:00 2001 From: yangsuiyu Date: Sat, 29 Aug 2020 17:50:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=8A=A8=E6=80=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=AA=97=E5=8F=A3=E6=A0=87=E9=A2=98setWindowTitle?= =?UTF-8?q?=E3=80=81=E7=AA=97=E5=8F=A3=E5=9B=BE=E6=A0=87setIcon=E3=80=81?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E5=8F=AF=E6=8B=96=E6=8B=BD=E6=8B=96=E6=94=BE?= =?UTF-8?q?setDragAndResize=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 2 - README.md | 8 +- .../biubiusuisui/entity/FXBaseController.java | 94 ++++++++++++++++-- .../example/langDemo/ChineseController.java | 13 +++ .../example/langDemo/EnglishController.java | 12 +++ .../example/langDemo/KoreanController.java | 13 +++ .../example/langDemo/LanguageDemo.java | 1 + .../example/lifeDemo/MainController.java | 1 - .../example/windowDemo/DemoController.java | 53 ++++++++++ .../example/windowDemo/FXWindowDemo.java | 20 ++++ .../factory/FXControllerFactory.java | 4 +- .../{Draggale.java => Draggable.java} | 2 +- .../biubiusuisui/function/FXWindowParser.java | 36 ++----- .../{messageQueue => mq}/MessageQueue.java | 37 +++---- .../biubiusuisui/proxy/FXControllerProxy.java | 2 +- .../edu/scau/biubiusuisui/utils/FileUtil.java | 9 +- .../scau/biubiusuisui/utils/FunctionUtil.java | 10 ++ .../resources/fxml/langDemo/langDemo.fxml | 1 + .../resources/fxml/windowDemo/windowDemo.fxml | 19 ++++ .../fxml/windowDemo/windowDemo_en.properties | 0 .../windowDemo/windowDemo_zh_CN.properties | 1 + src/main/resources/image/icon2.png | Bin 0 -> 11571 bytes src/main/resources/image/icon3.png | Bin 0 -> 11889 bytes 23 files changed, 267 insertions(+), 71 deletions(-) create mode 100644 src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/DemoController.java create mode 100644 src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/FXWindowDemo.java rename src/main/java/cn/edu/scau/biubiusuisui/function/{Draggale.java => Draggable.java} (82%) rename src/main/java/cn/edu/scau/biubiusuisui/{messageQueue => mq}/MessageQueue.java (74%) create mode 100644 src/main/java/cn/edu/scau/biubiusuisui/utils/FunctionUtil.java create mode 100644 src/main/resources/fxml/windowDemo/windowDemo.fxml create mode 100644 src/main/resources/fxml/windowDemo/windowDemo_en.properties create mode 100644 src/main/resources/fxml/windowDemo/windowDemo_zh_CN.properties create mode 100644 src/main/resources/image/icon2.png create mode 100644 src/main/resources/image/icon3.png diff --git a/README.en.md b/README.en.md index 3409f70..510f198 100644 --- a/README.en.md +++ b/README.en.md @@ -70,8 +70,6 @@ The framework is not the framework for beautifying UI, but to simplify the step ### The Process of Developing -Our project has suspended update from Nov. 25, 2019, and the next release will be updated to 2.0. We try to provides more data binding operations and optimize performance. - - [x] Modularization - [x] Integration with Spring - [x] Signal Mechanism diff --git a/README.md b/README.md index a35f6b0..2d401c1 100644 --- a/README.md +++ b/README.md @@ -70,8 +70,6 @@ ![JavaFx-Plus](README/JavaFX-Plus.png) ### 开发进程 -2019年11月25日起项目暂停更新,将会下次发布将会升级为2.0版本,到时候将会提供更多数据绑定操作,以及优化性能。 - - [x] 模块化 - [x] 与Spring的融合 - [x] 信号机制 @@ -1331,6 +1329,10 @@ public class Student { 4. 完善JavaFX-Plus生命周期 5. 新增日志log模块 6. 新增语言国际化操作 -7. 新增测试生命周期LifeDemo示例和测试国际化的LanguageDemo示例代码 +7. 新增测试生命周期LifeDemo示例和测试国际化的LangDemo示例代码 8. 规范化代码和更新README +## v1.3.0 TODO + +1. 开放动态修改窗口标题setWindowTitles、窗口图标setIcon、窗口可拖拽缩放setDragAndResize的接口 + diff --git a/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java b/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java index 1c27413..2513808 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java @@ -4,13 +4,19 @@ import cn.edu.scau.biubiusuisui.annotation.FXController; import cn.edu.scau.biubiusuisui.annotation.FXWindow; import cn.edu.scau.biubiusuisui.config.FXMLLoaderPlus; import cn.edu.scau.biubiusuisui.config.FXPlusApplication; +import cn.edu.scau.biubiusuisui.exception.ProtocolNotSupport; +import cn.edu.scau.biubiusuisui.function.DragWindowHandlerImpl; import cn.edu.scau.biubiusuisui.log.FXPlusLoggerFactory; import cn.edu.scau.biubiusuisui.log.IFXPlusLogger; +import cn.edu.scau.biubiusuisui.utils.FileUtil; import cn.edu.scau.biubiusuisui.utils.ResourceBundleUtil; import cn.edu.scau.biubiusuisui.utils.StringUtil; +import javafx.event.EventHandler; +import javafx.scene.image.Image; import javafx.scene.layout.Pane; import javafx.stage.Stage; +import java.io.File; import java.io.IOException; import java.lang.annotation.Annotation; import java.net.URL; @@ -19,7 +25,7 @@ import java.util.Map; import java.util.ResourceBundle; -/** +/* * In JavaFX-Plus Framework Controller * We use MVC model * V means view which stand for fxml @@ -36,7 +42,7 @@ import java.util.ResourceBundle; * @since JavaFX2.0 JDK1.8 */ public class FXBaseController extends Pane { - private static IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(FXBaseController.class); + private static final IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(FXBaseController.class); protected String name = ""; private Stage stage; @@ -45,7 +51,8 @@ public class FXBaseController extends Pane { /** - * @description 用于携带信息数据 + *

description 用于携带信息数据

+ * * @version 1.2 */ private Map query = new HashMap<>(); @@ -69,7 +76,7 @@ public class FXBaseController extends Pane { // 添加赋予是否为窗口的逻辑 if (annotation.annotationType().equals(FXWindow.class)) { fxWindow = (FXWindow) annotation; - isWindow = true; + this.isWindow = true; } } //load fxml file to show panel in scene builder @@ -173,13 +180,16 @@ public class FXBaseController extends Pane { * 唤起舞台 */ public void showStage() { - if (isWindow) { + if (this.isWindow) { this.stage.show(); } } + /** + * 显示并等待 + */ public void showAndWait() { - if (isWindow) { + if (this.isWindow) { this.stage.showAndWait(); } } @@ -188,7 +198,7 @@ public class FXBaseController extends Pane { * 关闭舞台 */ public void closeStage() { - if (isWindow) { + if (this.isWindow) { this.stage.close(); } } @@ -198,11 +208,75 @@ public class FXBaseController extends Pane { * @version 1.2 */ public void hideStage() { - if (isWindow) { + if (this.isWindow) { this.stage.setIconified(true); } } + /** + *

description: 开放设置窗口标题

+ * + * @param title 标题 + * @return true--修改标题成功 false--修改失败 + * @version 1.3 + */ + public final void setWindowTitle(String title) { + if (this.isWindow) { + this.stage.setTitle(title); + logger.info("setting title of window"); + } else { + logger.warn("the controller is not window"); + } + } + + /** + *

description: 开放设置窗口图标

+ * + * @param icon String 图标URL地址,需要放在resources文件下或项目根目录下 + */ + public final void setIcon(String icon) { + if (this.isWindow) { + if (!"".equals(icon)) { + try { + URL iconUrl = new FileUtil().getFilePathFromResources(icon); + if (iconUrl != null) { + if (new File(StringUtil.getRootPath(iconUrl)).exists()) { + this.stage.getIcons().clear(); + this.stage.getIcons().add(new Image(icon)); + } else { + logger.warn("the icon file has not existed"); + } + } else { + logger.warn("the icon file has not existed"); + } + } catch (ProtocolNotSupport protocolNotSupport) { + logger.error(protocolNotSupport.getMessage(), protocolNotSupport); + } + } + } + } + + /** + *

Description 开放是否允许窗口可拖拽和缩放的接口

+ * + * @param draggable 可拖拽 + * @param resizable 可缩放 + */ + public final void setDragAndResize(boolean draggable, boolean resizable) { + this.stage.setResizable(resizable); + if (draggable || resizable) { + EventHandler dragWindowHandler = new DragWindowHandlerImpl(stage, this, draggable, resizable); + this.setOnMousePressed(dragWindowHandler); + this.setOnMouseDragged(dragWindowHandler); + this.setOnMouseMoved(dragWindowHandler); + } + } + + /** + * 获取Controller名字 + * + * @return name + */ public String getName() { if ("".equals(name) || name == null) { // 原本无“name == null”判断条件,会出错 return StringUtil.getBaseClassName(getClass().getSimpleName()); @@ -224,11 +298,11 @@ public class FXBaseController extends Pane { } public boolean isWindow() { - return isWindow; + return this.isWindow; } public void setWindow(boolean window) { - isWindow = window; + this.isWindow = window; } public Stage getStage() { diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/ChineseController.java b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/ChineseController.java index c1dd03e..02476ec 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/ChineseController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/ChineseController.java @@ -17,6 +17,9 @@ import javafx.fxml.FXML; @FXWindow(mainStage = true, title = "languageDemo") @FXController(path = "fxml/langDemo/langDemo.fxml", locale = FXPlusLocale.SIMPLIFIED_CHINESE) public class ChineseController extends FXBaseController { + private String title = "languageDemo"; + private int count = 0; + @FXML public void clickToChinese() { redirect("ChineseController"); @@ -32,8 +35,18 @@ public class ChineseController extends FXBaseController { redirect("KoreanController"); } + /** + * 测试是否setWindowTitle接口 + */ + @FXML + public void changeTitleClick() { + this.setWindowTitle(this.title + count); + count++; + } + @FXRedirect public String redirect(String name) { return name; } + } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/EnglishController.java b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/EnglishController.java index 95ef72f..8d6386d 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/EnglishController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/EnglishController.java @@ -16,6 +16,9 @@ import javafx.fxml.FXML; @FXWindow(mainStage = false, title = "languageDemo") @FXController(path = "fxml/langDemo/langDemo.fxml", locale = FXPlusLocale.ENGLISH) public class EnglishController extends FXBaseController { + private String title = "languageDemo"; + private int count = 0; + @FXML public void clickToChinese() { redirect("ChineseController"); @@ -31,6 +34,15 @@ public class EnglishController extends FXBaseController { redirect("KoreanController"); } + /** + * 测试是否setWindowTitle接口 + */ + @FXML + public void changeTitleClick() { + this.setWindowTitle(this.title + count); + count++; + } + @FXRedirect public String redirect(String name) { return name; diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/KoreanController.java b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/KoreanController.java index 373f08b..0d7d256 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/KoreanController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/KoreanController.java @@ -16,6 +16,9 @@ import javafx.fxml.FXML; @FXWindow(mainStage = false, title = "languageDemo") @FXController(path = "fxml/langDemo/langDemo.fxml", locale = FXPlusLocale.KOREAN) public class KoreanController extends FXBaseController { + private String title = "languageDemo"; + private int count = 0; + @FXML public void clickToChinese() { redirect("ChineseController"); @@ -31,6 +34,16 @@ public class KoreanController extends FXBaseController { redirect("KoreanController"); } + + /** + * 测试是否setWindowTitle接口 + */ + @FXML + public void changeTitleClick() { + this.setWindowTitle(this.title + count); + count++; + } + @FXRedirect public String redirect(String name) { return name; diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/LanguageDemo.java b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/LanguageDemo.java index d610437..53217b9 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/LanguageDemo.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/langDemo/LanguageDemo.java @@ -17,4 +17,5 @@ public class LanguageDemo extends Application { public void start(Stage primaryStage) throws Exception { FXPlusApplication.start(getClass()); } + } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/lifeDemo/MainController.java b/src/main/java/cn/edu/scau/biubiusuisui/example/lifeDemo/MainController.java index 18d4f83..802aeca 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/example/lifeDemo/MainController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/lifeDemo/MainController.java @@ -8,7 +8,6 @@ import cn.edu.scau.biubiusuisui.entity.FXPlusLocale; import cn.edu.scau.biubiusuisui.log.FXPlusLoggerFactory; import cn.edu.scau.biubiusuisui.log.IFXPlusLogger; import javafx.fxml.FXML; -import javafx.scene.input.Clipboard; /** * @author suisui diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/DemoController.java b/src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/DemoController.java new file mode 100644 index 0000000..9a0c083 --- /dev/null +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/DemoController.java @@ -0,0 +1,53 @@ +package cn.edu.scau.biubiusuisui.example.windowDemo; + +import cn.edu.scau.biubiusuisui.annotation.FXController; +import cn.edu.scau.biubiusuisui.annotation.FXWindow; +import cn.edu.scau.biubiusuisui.entity.FXBaseController; +import javafx.fxml.FXML; +import javafx.scene.control.ToggleButton; +import javafx.stage.StageStyle; + +/** + * @author suisui + * @description 测试Controller + * @date 2020/8/29 09:41 + * @since JDK1.8 + */ +@FXWindow(mainStage = true, title = "windowDemo", icon = "image/icon.png", style = StageStyle.UNDECORATED) +@FXController(path = "fxml/windowDemo/windowDemo.fxml") +public class DemoController extends FXBaseController { + private String title = "windowDemo -- "; + private int count = 0; + private String iconStr = "image/icon2.png"; + private String iconStr2 = "image/icon3.png"; + + + @FXML + private ToggleButton canResizableTB; + + @Override + public void initialize() throws Exception { + canResizableTB.selectedProperty().addListener(e -> { + this.setDragAndResize(true, canResizableTB.isSelected()); + }); + } + + /** + * 修改标题点击事件 + */ + @FXML + public void changeTitleClick() { + this.setWindowTitle(title + count); + count++; + } + + /** + * 字符串修改图标 + */ + @FXML + public void changeIconClick() { + this.setIcon(count % 2 == 0 ? iconStr : iconStr2); + count++; + } + +} diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/FXWindowDemo.java b/src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/FXWindowDemo.java new file mode 100644 index 0000000..8ca0400 --- /dev/null +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/windowDemo/FXWindowDemo.java @@ -0,0 +1,20 @@ +package cn.edu.scau.biubiusuisui.example.windowDemo; + +import cn.edu.scau.biubiusuisui.annotation.FXScan; +import cn.edu.scau.biubiusuisui.config.FXPlusApplication; +import javafx.application.Application; +import javafx.stage.Stage; + +/** + * @author suisui + * @description 测试开放设置部分FXWindow属性的接口 + * @date 2020/8/29 09:40 + * @since JDK1.8 + */ +@FXScan(base = "cn.edu.scau.biubiusuisui.example.windowDemo") +public class FXWindowDemo extends Application { + @Override + public void start(Stage primaryStage) throws Exception { + FXPlusApplication.start(FXWindowDemo.class); + } +} diff --git a/src/main/java/cn/edu/scau/biubiusuisui/factory/FXControllerFactory.java b/src/main/java/cn/edu/scau/biubiusuisui/factory/FXControllerFactory.java index 487389d..6eae35e 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/factory/FXControllerFactory.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/factory/FXControllerFactory.java @@ -13,7 +13,7 @@ import cn.edu.scau.biubiusuisui.expression.data.ExpressionParser; import cn.edu.scau.biubiusuisui.function.FXWindowParser; import cn.edu.scau.biubiusuisui.log.FXPlusLoggerFactory; import cn.edu.scau.biubiusuisui.log.IFXPlusLogger; -import cn.edu.scau.biubiusuisui.messageQueue.MessageQueue; +import cn.edu.scau.biubiusuisui.mq.MessageQueue; import cn.edu.scau.biubiusuisui.proxy.FXControllerProxy; import cn.edu.scau.biubiusuisui.stage.StageManager; import cn.edu.scau.biubiusuisui.utils.ResourceBundleUtil; @@ -168,7 +168,7 @@ public class FXControllerFactory { * @Description 为有FXWindow注解的类创建Stage */ private static Stage createWindow(FXWindow fxWindow, Class clazz, FXBaseController fxBaseControllerProxy) { - logger.info("creating window"); + logger.info("creating window....."); Stage stage = new Stage(); fxBaseControllerProxy.setStage(stage); double preWidth = fxWindow.preWidth() == 0 ? fxBaseControllerProxy.getPrefWidth() : fxWindow.preWidth(); diff --git a/src/main/java/cn/edu/scau/biubiusuisui/function/Draggale.java b/src/main/java/cn/edu/scau/biubiusuisui/function/Draggable.java similarity index 82% rename from src/main/java/cn/edu/scau/biubiusuisui/function/Draggale.java rename to src/main/java/cn/edu/scau/biubiusuisui/function/Draggable.java index 4a3d808..a7495e0 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/function/Draggale.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/function/Draggable.java @@ -6,6 +6,6 @@ package cn.edu.scau.biubiusuisui.function; * @date 2019/7/27 1:54 * @since JavaFX2.0 JDK1.8 */ -public interface Draggale { +public interface Draggable { } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/function/FXWindowParser.java b/src/main/java/cn/edu/scau/biubiusuisui/function/FXWindowParser.java index 11caa64..c16cb98 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/function/FXWindowParser.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/function/FXWindowParser.java @@ -22,44 +22,28 @@ import java.net.URL; * @since JavaFX2.0 JDK1.8 */ public class FXWindowParser { - private static IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(FXWindowParser.class); + private static final IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(FXWindowParser.class); public void parse(Stage stage, FXBaseController fxControllerProxy, FXWindow fxWindow) { logger.info("parsing @FXWindow of class: " + fxControllerProxy.getName()); + // 处理 title - stage.setTitle(fxWindow.title()); + fxControllerProxy.setWindowTitle(fxWindow.title()); // 处理 icon - if (!"".equals(fxWindow.icon())) { - try { - URL iconUrl = new FileUtil().getFilePathFromResources(fxWindow.icon()); - if (iconUrl != null) { - if (new File(StringUtil.getRootPath(iconUrl)).exists()) { - stage.getIcons().add(new Image(fxWindow.icon())); - } else { - logger.warn("the icon file has not existed"); - } - } else { - logger.warn("the icon file has not existed"); - } - } catch (ProtocolNotSupport protocolNotSupport) { - logger.error(protocolNotSupport.getMessage(), protocolNotSupport); - protocolNotSupport.printStackTrace(); - } + fxControllerProxy.setIcon(fxWindow.icon()); + + // 处理draggable和resizable + if (fxWindow.draggable() || fxWindow.resizable()) { + fxControllerProxy.setDragAndResize(fxWindow.draggable(), fxWindow.resizable()); } // fxWindow的resizable默认为false if (fxWindow.resizable()) { - stage.setResizable(true); + fxControllerProxy.setDragAndResize(fxWindow.draggable(), true); } - // 处理draggable和resizable - if (fxWindow.draggable() || fxWindow.resizable()) { - EventHandler dragWindowHandler = new DragWindowHandlerImpl(stage, fxWindow.minWidth(), fxWindow.minHeight(), fxControllerProxy, fxWindow.draggable(), fxWindow.resizable()); - fxControllerProxy.setOnMousePressed(dragWindowHandler); - fxControllerProxy.setOnMouseDragged(dragWindowHandler); - fxControllerProxy.setOnMouseMoved(dragWindowHandler); - } + // 处理style stage.initStyle(fxWindow.style()); } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/messageQueue/MessageQueue.java b/src/main/java/cn/edu/scau/biubiusuisui/mq/MessageQueue.java similarity index 74% rename from src/main/java/cn/edu/scau/biubiusuisui/messageQueue/MessageQueue.java rename to src/main/java/cn/edu/scau/biubiusuisui/mq/MessageQueue.java index dd338be..173cb8e 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/messageQueue/MessageQueue.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/mq/MessageQueue.java @@ -1,4 +1,4 @@ -package cn.edu.scau.biubiusuisui.messageQueue; +package cn.edu.scau.biubiusuisui.mq; import cn.edu.scau.biubiusuisui.annotation.FXReceiver; import cn.edu.scau.biubiusuisui.entity.FXBaseController; @@ -20,9 +20,8 @@ import java.util.concurrent.ConcurrentHashMap; * @date 2019/6/25 12:24 * @since JavaFX2.0 JDK1.8 */ - public class MessageQueue { - private IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(MessageQueue.class); + private static final IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(MessageQueue.class); private static Map> receivers = new ConcurrentHashMap<>(); //Map<主题,订阅了主题的所有方法> @@ -31,6 +30,11 @@ public class MessageQueue { private MessageQueue() { } + /** + * 获取mq单例 + * + * @return MessageQueue + */ public static synchronized MessageQueue getInstance() { if (messageQueue == null) { messageQueue = new MessageQueue(); @@ -39,9 +43,9 @@ public class MessageQueue { } /** - * @param fxBaseController - * @param fxBaseControllerProxy - * @Description 注册消费者,即FXReceiver注解的method + * @param fxBaseController 基础controller + * @param fxBaseControllerProxy 基础controller代理 + * @description 注册消费者,即FXReceiver注解的method */ public void registerConsumer(FXBaseController fxBaseController, FXBaseController fxBaseControllerProxy) { Class clazz = fxBaseController.getClass(); @@ -51,7 +55,6 @@ public class MessageQueue { for (Annotation annotation : annotations) { if (FXReceiver.class.equals(annotation.annotationType())) { logger.info("registering consumer: " + fxBaseControllerProxy.getName()); -// System.out.println("FXReceiver"); FXReceiver receiver = (FXReceiver) annotation; FXMethodEntity fxMethodEntity = new FXMethodEntity(fxBaseControllerProxy, method); List fxMethodEntities = receivers.get(receiver.name()); @@ -66,9 +69,9 @@ public class MessageQueue { } /** - * @param id - * @param msg - * @Description 处理消息发送,id为topic,msg为消息 + * @param id 消息topic + * @param msg 消息内容 + * @description 处理消息发送 */ public void sendMsg(String id, Object msg) { List lists = receivers.get(id); @@ -80,23 +83,15 @@ public class MessageQueue { if (method.getParameterCount() == 0) { try { method.invoke(fxBaseController); - } catch (IllegalAccessException e) { + } catch (IllegalAccessException | InvocationTargetException e) { logger.error(e.getMessage()); - e.printStackTrace(); - } catch (InvocationTargetException e) { - logger.error(e.getMessage()); - e.printStackTrace(); } } else { try { - // obj the object the underlying method is invoked from + // 调起FXReceiver注解的方法 method.invoke(fxBaseController, msg); - } catch (IllegalAccessException e) { + } catch (IllegalAccessException | InvocationTargetException e) { logger.error(e.getMessage()); - e.printStackTrace(); - } catch (InvocationTargetException e) { - logger.error(e.getMessage()); - e.printStackTrace(); } } } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXControllerProxy.java b/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXControllerProxy.java index a552dfb..a624205 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXControllerProxy.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXControllerProxy.java @@ -3,7 +3,7 @@ package cn.edu.scau.biubiusuisui.proxy; import cn.edu.scau.biubiusuisui.annotation.FXRedirect; import cn.edu.scau.biubiusuisui.annotation.FXSender; import cn.edu.scau.biubiusuisui.entity.FXBaseController; -import cn.edu.scau.biubiusuisui.messageQueue.MessageQueue; +import cn.edu.scau.biubiusuisui.mq.MessageQueue; import cn.edu.scau.biubiusuisui.stage.StageManager; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; diff --git a/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java b/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java index 7bd00e9..c4809b8 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java @@ -18,7 +18,7 @@ public class FileUtil { /** * @param filePath - * @return + * @return 返回URL * @throws ProtocolNotSupport * @decription 从resources文件夹中读取File * 输出如: file:/Users/suisui/workspace/Idea/JavaFX-Plus/target/classes/image/icon.png @@ -28,6 +28,7 @@ public class FileUtil { return FileUtil.class.getClassLoader().getResource(filePath); } + /** * @param filePath * @return @@ -44,7 +45,7 @@ public class FileUtil { /** * @param filePath 绝对路径或相对路径 - * @return + * @return 返回文件内容 * @description 读取文件 */ public static String readFile(String filePath) { @@ -65,8 +66,8 @@ public class FileUtil { } /** - * @param filePath - * @param content + * @param filePath 写出文件的地址 + * @param content 文件内容 * @description 写文件 */ public static void writeFile(String filePath, String content) { diff --git a/src/main/java/cn/edu/scau/biubiusuisui/utils/FunctionUtil.java b/src/main/java/cn/edu/scau/biubiusuisui/utils/FunctionUtil.java new file mode 100644 index 0000000..23a8c00 --- /dev/null +++ b/src/main/java/cn/edu/scau/biubiusuisui/utils/FunctionUtil.java @@ -0,0 +1,10 @@ +package cn.edu.scau.biubiusuisui.utils; + +/** + * @author suisui + * @description 函数工具类 + * @date 2020/8/28 23:32 + * @since JDK1.8 + */ +public class FunctionUtil { +} diff --git a/src/main/resources/fxml/langDemo/langDemo.fxml b/src/main/resources/fxml/langDemo/langDemo.fxml index f3ee37a..6bb0b75 100644 --- a/src/main/resources/fxml/langDemo/langDemo.fxml +++ b/src/main/resources/fxml/langDemo/langDemo.fxml @@ -58,6 +58,7 @@