diff --git a/javascript/DatabaseTool.html b/javascript/DatabaseTool.html
index e8e0564..b43bec9 100644
--- a/javascript/DatabaseTool.html
+++ b/javascript/DatabaseTool.html
@@ -208,7 +208,7 @@
.quick-create-table:hover{opacity:0.9}
-
+
\ No newline at end of file
diff --git a/src/main/java/com/axis/innovators/box/browser/BrowserWindow.java b/src/main/java/com/axis/innovators/box/browser/BrowserWindow.java
index 5272059..2633201 100644
--- a/src/main/java/com/axis/innovators/box/browser/BrowserWindow.java
+++ b/src/main/java/com/axis/innovators/box/browser/BrowserWindow.java
@@ -223,7 +223,6 @@ public class BrowserWindow extends JFrame {
}
}
-
private Component initializeCef(Builder builder) throws MalformedURLException {
if (!isInitialized) {
isInitialized = true;
@@ -471,9 +470,6 @@ public class BrowserWindow extends JFrame {
browser = client.createBrowser(htmlUrl, false, false);
}
- String fontInfo = getSystemFontsInfo();
- injectFontInfoToPage(browser, fontInfo);
-
Component browserComponent = browser.getUIComponent();
if (builder.browserCreationCallback != null) {
boolean handled = builder.browserCreationCallback.onLayoutCustomization(
@@ -508,6 +504,7 @@ public class BrowserWindow extends JFrame {
config.jsQueryFunction = "javaQuery";// 定义方法
config.jsCancelFunction = "javaQueryCancel";// 定义取消方法
+ updateTheme();
// 6. 配置窗口布局(确保只添加一次)
SwingUtilities.invokeLater(() -> {
@@ -585,11 +582,11 @@ public class BrowserWindow extends JFrame {
public void updateTheme() {
// 1. 获取Java字体信息
String fontInfo = getSystemFontsInfo();
- injectFontInfoToPage(browser, fontInfo);
+ boolean isDarkTheme = AxisInnovatorsBox.getMain().getRegistrationTopic().isDarkMode();
+ injectFontInfoToPage(browser, fontInfo, isDarkTheme);
// 2. 注入主题信息
- boolean isDarkTheme = AxisInnovatorsBox.getMain().getRegistrationTopic().isDarkMode();
- injectThemeInfoToPage(browser, isDarkTheme);
+ //injectThemeInfoToPage(browser, isDarkTheme);
//// 3. 刷新浏览器
//SwingUtilities.invokeLater(() -> {
@@ -650,44 +647,31 @@ public class BrowserWindow extends JFrame {
return;
}
- client.addLoadHandler(new CefLoadHandlerAdapter() {
- @Override
- public void onLoadEnd(CefBrowser browser, CefFrame frame, int httpStatusCode) {
- String themeInfo = String.format(
- "{\"isDarkTheme\": %s, \"timestamp\": %d}",
- isDarkTheme,
- System.currentTimeMillis()
- );
+ String themeInfo = String.format(
+ "{\"isDarkTheme\": %s, \"timestamp\": %d}",
+ isDarkTheme,
+ System.currentTimeMillis()
+ );
- String script =
- "window.javaThemeInfo = " + themeInfo + ";\n" +
- "console.log('Java theme information has been loaded:', window.javaThemeInfo);\n" +
- "\n" +
- "if (typeof applyJavaTheme === 'function') {\n" +
- " applyJavaTheme(window.javaThemeInfo);\n" +
- "}\n" +
- "\n" +
- "var event = new CustomEvent('javaThemeChanged', {\n" +
- " detail: window.javaThemeInfo\n" +
- "});\n" +
- "document.dispatchEvent(event);\n" +
- "console.log('The javaThemeChanged event is dispatched');";
+ // 最简单的脚本 - 直接设置和分发事件
+ String script = String.format(
+ "window.javaThemeInfo = %s;" +
+ "console.log('主题信息已设置:', window.javaThemeInfo);" +
+ "" +
+ "var event = new CustomEvent('javaThemeChanged', {" +
+ " detail: window.javaThemeInfo" +
+ "});" +
+ "document.dispatchEvent(event);" +
+ "console.log('javaThemeChanged事件已分发');",
+ themeInfo);
- browser.executeJavaScript(script, browser.getURL(), 0);
-
- browser.executeJavaScript(
- "console.log('Theme information injection is complete,window.javaThemeInfo:', typeof window.javaThemeInfo);" +
- "console.log('Number of theme event listeners:', document.eventListeners ? document.eventListeners('javaThemeChanged') : '无法获取');",
- browser.getURL(), 0
- );
- }
- });
+ browser.executeJavaScript(script, browser.getURL(), 0);
}
/**
* 注入字体信息到页面并设置字体
*/
- private void injectFontInfoToPage(CefBrowser browser, String fontInfo) {
+ private void injectFontInfoToPage(CefBrowser browser, String fontInfo,boolean isDarkTheme) {
if (client == null) {
return;
}
@@ -715,6 +699,25 @@ public class BrowserWindow extends JFrame {
"console.log('Number of event listeners:', document.eventListeners ? document.eventListeners('javaFontsLoaded') : '无法获取');",
browser.getURL(), 0
);
+
+ String themeInfo = String.format(
+ "{\"isDarkTheme\": %s, \"timestamp\": %d}",
+ isDarkTheme,
+ System.currentTimeMillis()
+ );
+
+ script = String.format(
+ "window.javaThemeInfo = %s;" +
+ "console.log('主题信息已设置:', window.javaThemeInfo);" +
+ "" +
+ "var event = new CustomEvent('javaThemeChanged', {" +
+ " detail: window.javaThemeInfo" +
+ "});" +
+ "document.dispatchEvent(event);" +
+ "console.log('javaThemeChanged事件已分发');",
+ themeInfo);
+
+ browser.executeJavaScript(script, browser.getURL(), 0);
}
});
@@ -732,6 +735,11 @@ public class BrowserWindow extends JFrame {
@Override
public void setVisible(boolean b) {
+ if (b) {
+ if (browser != null) {
+ updateTheme();
+ }
+ }
super.setVisible(b);
}
diff --git a/src/main/java/com/axis/innovators/box/browser/BrowserWindowJDialog.java b/src/main/java/com/axis/innovators/box/browser/BrowserWindowJDialog.java
index ee132d8..e2bf3d4 100644
--- a/src/main/java/com/axis/innovators/box/browser/BrowserWindowJDialog.java
+++ b/src/main/java/com/axis/innovators/box/browser/BrowserWindowJDialog.java
@@ -513,8 +513,7 @@ public class BrowserWindowJDialog extends JDialog {
}
}
- String fontInfo = getSystemFontsInfo();
- injectFontInfoToPage(browser, fontInfo);
+ updateTheme();
CefMessageRouter.CefMessageRouterConfig config = new CefMessageRouter.CefMessageRouterConfig();
config.jsQueryFunction = "javaQuery";// 定义方法
@@ -593,6 +592,8 @@ public class BrowserWindowJDialog extends JDialog {
return null;
}
+
+
/**
* 更新主题
*/
@@ -609,6 +610,7 @@ public class BrowserWindowJDialog extends JDialog {
//SwingUtilities.invokeLater(() -> {
// browser.reload();
//});
+
}
private void injectThemeInfoToPage(CefBrowser browser, boolean isDarkTheme) {
if (client == null) {
@@ -744,6 +746,11 @@ public class BrowserWindowJDialog extends JDialog {
@Override
public void setVisible(boolean b) {
+ if (b) {
+ if (browser != null) {
+ updateTheme();
+ }
+ }
super.setVisible(b);
}