Java Swing如何定制窗口标题栏


如题,通过搜索得到这一个答案,点击查看
上面指向了一个例子,例子是一个java主题(LookAndFeel)项目,上面有各种标题栏样式,通过这个例子我们就可以知道如何定制窗口标题。点击查看 | github源码
下载好源码之后,我拿起键盘就是ctrl-c ctrl-v,显然是行不通的。只能从头开始,reading the fucking source code.

首先看最关键的类LookAndFeel,有一个关键的方法getDefaults,这个方法返回一个table,这个table记录了各个组件对应的样式类(ComponentUI)和其他的一些属性。如果要修改组件的样式,需要在table里面注册相应的样式。table的key可以通过组件的getUIClassID方法获得,value是对应(ComponentUI)的类名。显然ComponentUI的创建是通过反射来创建的。本文来源:Seakee.top. 未经允许不得转载.

样式类(ComponentUI)如何编写,createUI静态构造方法必须重写。 installUI应用样式,可以在一些基类上改写。

如何改写title bar,titleBar不是单独的组件。事实上在设置了lookandfeel之后,titlebar也不会发生变化, 在设置

JFrame.setDefaultLookAndFeelDecorated(true);

之后,title bar是可以改变的,通过查看源码找到了JRootPane,JRootPane代表的主窗口容器(Panel),通过定制RootPaneUI,可以改写窗口周边的样式。具体如何编写,可以参看样例。MetalRootPaneUI

在设置完setDefaultLookAndFeelDecorated之后,一定要getRootPane().updateUI(),才能生效。本文来源:Seakee.top. 未经允许不得转载.

以上

我建议如果有相文档的的时候尽量先看文档,效率比看直接看源码高很多。

未经允许禁止转载!!!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注