From 4ce244579f189446b2bc31a1e5b3dd56c60f9008 Mon Sep 17 00:00:00 2001 From: tzdwindows 7 <3076584115@qq.com> Date: Sun, 16 Mar 2025 12:17:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(gui):=20=E6=B7=BB=E5=8A=A0=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=89=98=E7=9B=98=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现系统托盘支持,包含打开主界面、反编译工具和退出程序的菜单项 - 添加窗口关闭时隐藏而不是退出的功能 -优化托盘图标,使用圆角图像 - 增加中文字体支持和全局字体设置- 移除 AIChatDialog 中的 MathJax 配置- 更新 BoxClassLoader,添加 com.dustinredmond 包的访问权限 - 在 build.gradle 中添加 SystemTray4J 和 JavaFX相关依赖 --- .../innovators/box/gui/ComponentFactory.java | 57 ++++++++++++++++++ src/main/resources/icons/decompile.png | Bin 0 -> 4269 bytes src/main/resources/icons/exit.png | Bin 0 -> 6321 bytes src/main/resources/icons/home.png | Bin 0 -> 6506 bytes 4 files changed, 57 insertions(+) create mode 100644 src/main/java/com/axis/innovators/box/gui/ComponentFactory.java create mode 100644 src/main/resources/icons/decompile.png create mode 100644 src/main/resources/icons/exit.png create mode 100644 src/main/resources/icons/home.png diff --git a/src/main/java/com/axis/innovators/box/gui/ComponentFactory.java b/src/main/java/com/axis/innovators/box/gui/ComponentFactory.java new file mode 100644 index 0000000..c41952c --- /dev/null +++ b/src/main/java/com/axis/innovators/box/gui/ComponentFactory.java @@ -0,0 +1,57 @@ +package com.axis.innovators.box.gui; + +import javax.swing.*; +import java.awt.*; + +public class ComponentFactory { + /** + * 创建带样式的文本组件 + * @param text 显示文本 + * @param color 文本颜色 + * @param fontSize 字体大小(单位:pt) + * @param size 组件尺寸(null时使用自动布局) + * @return 配置完成的文本组件 + */ + public static Component createTextComponent(String text, Color color, + int fontSize, Dimension size) { + return createTextComponent(text, color, fontSize, null, size); + } + + /** + * 重载方法支持背景色配置 + * @param bgColor 背景颜色(null时为透明) + */ + public static Component createTextComponent(String text, Color color, + int fontSize, Color bgColor, + Dimension size) { + JLabel label = new JLabel(text) { + // 抗锯齿渲染 + @Override + protected void paintComponent(Graphics g) { + Graphics2D g2 = (Graphics2D) g; + g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); + super.paintComponent(g2); + } + }; + + // 基础样式配置 + label.setForeground(color); + label.setFont(new Font("微软雅黑", Font.PLAIN, fontSize)); + + // 背景色处理 + if (bgColor != null) { + label.setOpaque(true); + label.setBackground(bgColor); + } + + // 尺寸设置 + if (size != null) { + label.setPreferredSize(size); + label.setMinimumSize(size); + label.setMaximumSize(size); + } + + return label; + } +} diff --git a/src/main/resources/icons/decompile.png b/src/main/resources/icons/decompile.png new file mode 100644 index 0000000000000000000000000000000000000000..3931479ad3d3cafe1c6278a65534bcbbe4a3b6de GIT binary patch literal 4269 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 Ouzkz!fZ|Q;Z~hIMVtPIR literal 0 HcmV?d00001 diff --git a/src/main/resources/icons/exit.png b/src/main/resources/icons/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b6e6cf2af523df286c0a04d41be6ec0788e8a2 GIT binary patch literal 6321 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/icons/home.png b/src/main/resources/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a94017adc61c5349e0b1a701890bc12730248a GIT binary patch literal 6506 zcmeHM=T{TJmz@y0bWlO0mrz3QNK8T^3W;@T1AC=2UxWja+;;p3*cP18cU2NXt9XL_Aq9A%ChtpUs50!EjVc zws=smO(OrOK||aG{)g&Iq)lO8HAIZbVLCQAr&D@S@^kFwBq$ggCmIYpi%nY$4~RKi z4mXM2MGPNcW?(BS7#&qPhsBsCTD;b$lSiU_W7^9Z`Him|R}{83O?Il0>&@Jq>j-bS!(hG|77ZC1a;tG$&BC~dCk3C}U<{^aUDY}7 z(q!T})>nsyWX7l3zRA3EHxCOlX*rZ)zWMCyh-pm!`S)hV5UAUg1cx9`R)k#E4ia%` zFDgbZXD4T)0WVFXo$S~u2`%5H->Y6g9m_bKxst}dgxpz{>OaNvP%jV{7MX*axU4&t-IQn3w&tAo=_ zlv&GX;zU#li=}E|#N(KZahS6+eB~a-LZI0-a;%byRxiWd)@M}$F__)c6ra|0ZVqM~ zjY|7E?R^sh6|B9Lb}mAWm7frL6hF}AaDU9?@Lzq+`{yznF$fwav>1&kQloQMYv0nu zjS$T_j_jGjpNcmS76U3M-pY$XMrSyq_DuX#IkP(FJiD-!4fh;q^)B5GH$}t?t&kSP zG^sP6doQfG6)SJ0TdV|uU)8hFKMUJ7h*zVR)>au{InTaPWYUrb@@k>FW zgG7@Si@0l%xUCe=F_NyT*IsqM3J76UQ~F)C(^eJVf2pIbh)b&i&KXiaBvwdSVLimb z`|E8&Md^>vk8eQc7~2{X`3SG~nPmK@o1d$Dr1teWE0=yYTU&Jb4k1O!aV}oC0TmpJ zIx=P;-SLrah;Dc|l9-Vb<`68?QjtlqXWZc;-O&HJkleaA>DTe;YmPqlX~vRLVB9$# zpz-O*7IR`UoUtVDjg(e5-yaGZ8A2uOEwH@1jt4I`1@|O*V{4s>Io2|64@mTg&5LjC zBHtxYtU5mu#C=jSjXi0}`@T}L<=!c@BKJFN(}fwWse|6=8Jo9aRXAF_IWDl}gNWDk zX7`(Jg~)gO@i{3@tUCB)=l+?$5d2E46k*L!=b*(ucF%W>5hw3&L>|P^sITpKAY5_k z^Ac_#wNk15=4~ z&p>n?@^v&r7&LH?!7c{nr6G=?Rn)7ypTCZsP>|G&!${ zO6QDX&S36esEhbTA7v)=y+j#PC+za7h?=W_ZQN6^QaPm@VO98gyeY#X#%JEi(*li_ zkkyuU13PdZ6v=gHz~l5e_VqvFk%>&lvo;IY_ilkKVhSShO*C}^^Yz)He6YSdG||_m zz_NA!2KQ#T*!GsLI)aUr|J+lCZJGA9;mLnu+O2C7n|9Aeoo+MaHYW$y&LsNR+Tp?S zpg@!xecC`|*u$=e7dRp^g=0sprWY={Jp*VD$zZu{T7=0Q2PMArjP|dxvojhtnwG1Y zk|I~R7HhdR|4^?iAup=x43(1_nBzuOU!3Kw zS4T=mZ!{Qa!Uo#QEYjkv z+}hf?qhB%>y5b5Ar98Cw#Yu0cMY8dM!TdkfP@&Hd&TKMF0W*@=nF}W&IDAE+B=RFF zb9>@v-}>T3@+0@b179s~|Es%MJq-Gb7K&Uf1{7Z$CB80A=|u{(Pq~3L2}xpoTNlS` z9n)E5qV@FdjA;XRV>w@pN%ZY{k&o2gNf*-{w|-1D_k;Zzdv?a(;TT1lb&tZ$ZRWCj z-Ve~O&LHpEmg>jmhi_EPJ)1X~Da@(Oc@S7rWzrIe`R49iW@no|_l_SV3`#^;VCWw> z=kR=K73G^+FI~7kTb%+CJPxBnk43U0cTMLQw6=;nVejxcjKPY7Ce-&>^KpR!#h6~g z4B;n44{fHp@1ZdeS%@W@9#(nM)o1-i+&!7pCnUN`-r-O?gPD9>{kllQ4#-b@-grw~ z@33yT7%1kc+Ih6VS`gA)B1#p@U$7wFX&WNyF=?;zL^+fi^r>s8d{UFlzRtr~S5fSL z8by2C5H|}W_;yWY42=mpBcEg*W2xkKmXaC=YQkt+*>u?$B<$77pjml zk{AjBgxL7$K(m7+(LvVMZ&6zejT(C;zM>Yl3NsH1;3vlDvol|0P3Ghh3bPEhJ_O+| zb;lQBRu(^9ji}e3YFpLyy-$cWHO9?8J6f&ZDHQ9OjL%8XUos4ahaSI#qL~`jHf}rl zJ^Vw&Y`|7Zcv2BQP}rV*o>)=H!!BO%+91HU)T2-e?4K2qVv6ZR1Z7pQ70(R?O{0c8 zCA8^}|9Te66MV1idf_y;zLa)X?+M;$OOm8Q$GG##u=~~L#7hhH@Kt!dVQ+qh?Oa(5 zRCg?{z^N2@-li%=wnZs=`T@5(jfO9*mdaPu|A@4-FSVVt!fQbpq`1Ey8 zWfvh$fMAt&MQgqOOEFsk)OwPjRz%OtM}dZ)c9?*Fdta{Rf3(xk(?5BT5^CC15bmJw z+&?)`H+LiJ{Z?eE>i27RT{tI@I}6F|F)=N%xPd^za3=m_fjr zq;5@&cB?feixiW^U>tYse0UA5CfV^}LM^l6rr=7xCR-!NGvBKNj&$IW_x`hi`iR&H zY^AAL81>N9(0ZQogWR=|s!{ithq05o?fG1}Y_}w! zHXaH|m~F9t<*6F+rfq6rCfyc-x6s`E<}JCD>wMc~k=I*)d=zoL%+@XtBX8G=6^Xx%|`?==HdCkROX@Kf^77$=2^T&~&G)m*@rZmz9P7 zLIMnL+o*^8LO`U%r7rd1qKeFdY`S>A%a@dVT3<2mE11@;Q4MgQ_8UAOkjm`ZUn;D6 z(t)aOia!)5u4d9do#HSU7b~MGo{hJ7sx4&3I4>7WfQ{y!^P~Y0+s>a|kR5*&x%lIR zcROGS3h!=RquH>v;G7XnGR)6cGZd#E$xQ|L=iWIY1rFj7I#ynXy17BrfkTFjKO0S# zP96qb{c$;IL1^yVCafOzix&`svE9)HSZB;*0}KHcW*w8nHb0zBRegb-cB3@O%xnI_ z=j6Ix_iNA9z`IBe=7*0p92lYhlrT1y3m)v!6?~DHuxQ0rdN{^Q!1Nqody}8UG5671 zs(=5lrbbd_Sz#hyUtU@6&W8Tf$FZQI@=7C*-u+?-(2t*;9aQvfm{Eh^Au`oV={tIF ze+&#FgxBrzsO5kE6XEHfZ?VjI)y&`z1y__D8Z2!Fslb}<{vdXDqPpfRi4)!Jzym@5 z^0+U|-beOh_Am#yI|((74s?$c6o4PfOZV7|4n!WLVG__KwUzl7fS~Kqh)G-r+z6${ zIRm(-#bVZRGyvJ1m?{#k8DIHajF%U9%!&0VI{ALyh&el`2yCroEK6(w+MW7>r?e7X zk|E)o%Hq}DZc9g>h>^E8OlVs}zuT9bsPL0~ZLiE&(lPJ|IKbr?rnZ??9h|!p2z6u6 z{o^ts46OdH1#R}-)nsD}2^dnO1-+0#57)e&VgkJ%fLGdf_&d=6lep>yeeN*w!4P<# zBI@G1JFvui#=!%?MXyb!IMRZrAt3E2PvC;dtPq9lFpf~g-$XwJ;KSu+3Nm0!+){c~m$!Ro=8GR#{U>(c|^bmOr8FH6>q6f^?se$^gv1XMd7qooc zx|k7g)9ljW^!M9z8qEJOgLKV51l?SB(5Q{MMg>GJck~(MlHRwcnw0^;Si9Wy)OLwC zcSLCM=(+Tvo$r*?N1uDHLudF=++7H|R~q}_D@SV`YoJdzST^m`TsLC}5(gTHM?37% zZLC0^Fj)8-UWg)xsX)suRXzv%zoN`64k=*6!dX)tAOJ|Crz+D6)ItT%ZJE&TjKaPE zL7stG%nUovQyqYZ(AMu*yx|6c8LK%Ed~aq-X7*d@d5$-8>y_L86XwH{N#!^f4h zsZt)``k%GZ7O|R(3Xr|!m+fg!G^)>BAp0QpxN#W+PvYW}9NR<2tO48SQ&&?`e{Pz6 z{ah0va`3NdC-sesQUb*g+yY6owRnEX48xr3oUBA1Tetba`FpNFHuE!s2vPUj0~Eob zSs#MGh@TQW?)q{LZkMHg%<7z9l!2TRUE@yPqQ!^IXRohTK#&dxN1k;$55gj#U z6vl*GxfsxUj2j6pLn?ZDzqH;6yACa9eOonU7zoPY(rnbdsOXG}ErttUybaZ3qg(;W zF#Z)*Jz1PgInm37VX~zB|D=}#`xqu*pIs)7iBN;vYuc`-ZY(WOX@5TvO)>_ci404-N!*7HZS_$SOn#~yCiY>RuZnFF#Q@;LmIitah^uA%!> z$C9GIeVGpe*ZI+fk-^}41b~+R0sU<;(DHgHH^`-PTb$+vxqKASNed`#&VUzdfL8Ap zqyV)?tLI5452RS}{jF+1>Jl1ag#unP?GUR82*oB;{_h4e`U?xvAK}d!b*}u+dNX-} z5ow&-?Ox2|Ti+PRy=;ro@c_yzG1ue|Q!u-}2RQrR;C%%)(zxX#S6koSP%%|mPMBV( zZJpBlaIhw}!i6wu)S`da?m#mmwo*IbDEBfPxScX!ECNt$0Wl4X#qgCo1CF{7P=2f} zR-&2}<2#YR=ymCha5_A=d|)Q#cQBy0>?sWun=YTQ#?8t|A=9yBlS8wVPjwSolvGY` zFgL82NaYyuaWUYuL^3wof(DFXc5D%m0bkPskSUC9PQ$Yp+2C*c|5Pn$z|WBqv33Uz zdE^_atCILhUEU$ti?0$Crb;-#(E2Tmi=^+eJ@R&X7Wqph-V>9ayR)h#{t;ey0azuN zUzU>&rd9~QImH-jc~7bJh%F;`=bL1bq5+WC31DmK#KNNUNjX2?erd;z9{ronBie;= z4!G91e?XU5oCW@v>6^prgay(E8m3tOSZ_V^>98WkwVOJ8eUe)!gn&f+(I2(;?@gmf zGd^I~zUM5qJ}pDM*={cIc2qqvcy#tfIVFmh z!yM0VC2M@#4EgC5by3RK3?065($PF9}yCUrGF;dW3{m6V