请选择 进入手机版 | 继续访问电脑版

默认
打赏 发表评论 16
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
BeautyEye简明开发者指南

第一步:如何开始?


首先把beautyeye_lnf.jar 文件作为lib放入你的项目并引用之.
目前,beautyeye_lnf.jar 文件位于all_in_one.zip包中的位置是:all_in_one/dist/

第二步:如何使用BeautyEye L&F?


加入以下代码,即可将你的Java程序界面更换成Beauty Eye的外观:
public static void main(String[] args)
{
    try
    {
        org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();
    }
    catch(Exception e)
    {
        //TODO exception
    }
    ..................... 你的程序代码 .........................
    ..................... 你的程序代码 .........................
}
>> 最新API文档在线地址是:http://www.52im.net/extend/docs/api/beautyeyev3/

附录1:如何定义窗口边框类型?

public static void main(String[] args)
{
    try
    {
        //设置本属性将改变窗口边框样式定义
        BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;
        org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();
    }
    catch(Exception e)
    {
        //TODO exception
    }
    ..................... 你的程序代码 .........................
    ..................... 你的程序代码 .........................
}

附录2:有几种窗口边框类型?

详见类org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.FrameBorderStyle。


>> 代码样例见下图:
be_border_setup.png

>> beautyeye中预定义的窗体Border类型表:
窗口边框代码常量效果图
系统默认样式osLookAndFeelDecorated 1.png
强立体半透明translucencyAppleLike 2.png
弱立体感半透明translucencySmallShadow 3.png
普通不透明generalNoTranslucencyShadow 4.png

>> 详情可参见API文档:http://www.52im.net/extend/docs/api/beautyeyev3/

附录3:如何使用不同颜色的按钮?


  • 按钮样式1:

    btnInstance.setUI(new BEButtonUI(). setNormalColor(BEButtonUI.NormalColor.normal));
  • 按钮样式2:
    1.png
    btnInstance.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.green));
  • 按钮样式3:
    2.png
    btnInstance.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.lightBlue));
  • 按钮样式4:
    3.png
    btnInstance.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.blue));
  • 按钮样式5:
    4.png
    btnInstance.setUI(new BEButtonUI().setNormalColor(BEButtonUI.NormalColor.red));

>> 详情可参见API文档http://www.52im.net/extend/docs/api/beautyeyev3/

附录4:如何隐藏“设置”按钮?


5.png

说明: 该按钮目前仅作为演示窗口标题按钮的自定义能力之用,未来将开放自定义功能,目前你可选择隐藏之。

UIManager.put("RootPane.setupButtonVisible", false);

附录5:如何开启/关闭窗口在不活动时的半透明效果?


@since v3.2
//设置此开关量为false即表示关闭之,BeautyEye LNF中默认是true
BeautyEyeLNFHelper.translucencyAtFrameInactive = false;

附录6:怎样让JToolBar的ui不使用渐变图片而使用传统的纯色来填充背景?


@since v3.4
6.png
方法1:
//设置属性即可:true表示使用ToolBar.background颜色实现纯
//色填充背景,BeautyEye中此属性默认是false
UIManager.put("ToolBar.isPaintPlainBackground", Boolean.TRUE);
方法2:
//使用ClientProperty单独设置控制每个toolbar:true表示使用ToolBar.background
//颜色实现纯色填充背景,BeautyEye中此属性默认是false
toolbarInstance.putClientProperty("ToolBar.isPaintPlainBackground", Boolean.TRUE);

说明: 方法2可以单独控制每一个JToolBar组件,而方法1是全局属性,方法2的优先级高于方法1。

附录7:如何自定义JToolBar ui的border?


@since v3.4
加入以下代码,使用你自已的border:
//自定义JToolBar ui的border
Border bd = new org.jb2011.lnf.beautyeye.ch8_toolbar.BEToolBarUI.ToolBarBorder(
        UIManager.getColor("ToolBar.shadow")     //Floatable时触点的颜色
        , UIManager.getColor("ToolBar.highlight")//Floatable时触点的阴影颜色
        , new Insets(6, 0, 11, 0));              //border的默认insets
UIManager.put("ToolBar.border",new BorderUIResource(bd));

说明: 以上代码必须在 “BeautyEyeLNFHelper.launchBeautyEyeLNF();” 之后执行方能起效哦。

附录8:如何设置BeantuEye外观下JTabbedPane的左缩进?


7.png
参见以下代码实现:
//改变InsetsUIResource参数的值即可实现
UIManager.put("TabbedPane.tabAreaInsets"
    , new javax.swing.plaf.InsetsUIResource(3,20,2,20));

说明: 以上代码必须在 “BeautyEyeLNFHelper.launchBeautyEyeLNF();” 之后执行方能起效哦。

附录9:如何调置窗体背景全透明并完全隐藏一个窗体的标题栏?


8.png
在你的窗体被setVisible(true)前调用以下代码即可:
// set frame full transparent
frame.setUndecorated(true);
AWTUtilities.setWindowOpaque(frame, false);
frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);

说明: 以上代码适用于所有处于非系统窗体标题栏的情况,包括官方MetalLookAndFeel外观等。

附录10:如何解决切换输入法导致白屏的问题?

说明: 切换输入法导致白屏问题是由于官方的透明API的bug引起,与BeautyEye本身无关。


解决方法参见:http://www.52im.net/thread-73-1-1.html 或者 http://hi.baidu.com/shenaodong/item/423419d57354feea55347fe5 或者 http://stackoverflow.com/questions/14374111/input-method-removes-transparent-effect-from-jframe-in-swing

附录13:win7平台下某些java版本上字体发虚的问题说明


该问题具体请参见 issue 25

解决方案: 把默认的字体换成win7平台下默认的微软雅黑,则字体效果会大有改善。

/** UIManager中UI字体相关的key */
public static String[] DEFAULT_FONT  = new String[]{
    "Table.font"
    ,"TableHeader.font"
    ,"CheckBox.font"
    ,"Tree.font"
    ,"Viewport.font"
    ,"ProgressBar.font"
    ,"RadioButtonMenuItem.font"
    ,"ToolBar.font"
    ,"ColorChooser.font"
    ,"ToggleButton.font"
    ,"Panel.font"
    ,"TextArea.font"
    ,"Menu.font"
    ,"TableHeader.font"
    // ,"TextField.font"
    ,"OptionPane.font"
    ,"MenuBar.font"
    ,"Button.font"
    ,"Label.font"
    ,"PasswordField.font"
    ,"ScrollPane.font"
    ,"MenuItem.font"
    ,"ToolTip.font"
    ,"List.font"
    ,"EditorPane.font"
    ,"Table.font"
    ,"TabbedPane.font"
    ,"RadioButton.font"
    ,"CheckBoxMenuItem.font"
    ,"TextPane.font"
    ,"PopupMenu.font"
    ,"TitledBorder.font"
    ,"ComboBox.font" 
};
// 调整默认字体
for (int i = 0; i < DEFAULT_FONT.length; i++)
    UIManager.put(DEFAULT_FONT[i],new Font("微软雅黑", Font.PLAIN,14));

附录14:关于使用BeautyEye后窗体的contentPane全透明的说明


首先申明这不是BeautyEye的bug,这其实是官方窗口透明API的实现,JFrame(包括JDialog)的contentPane实质就是JPanel,它被认为是窗口的一部分,官方窗口透明API在透明窗口其它部件的同时也把它透明了(我没看过源码,目前还不能确切的说),但这是合理的,因为它将能实现你还没想到的全透明场景。

解决办法: 在contentPane上再加一层JPanel即可。


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:BeautyEye版本更新日志(最新版本v3.6)下一篇:BeautyEye快速入门介绍
推荐方案
评论 16
补充一个群友提的问题:"FrameBorderStyle.translucencyAppleLike  用这个边框后发现长和宽都变小了大约 50 , 这个是怎么回事? 该怎么解决呢?"

原因是:Java把自定义外观的窗体边框也算在整个窗体大小里了,其实你也可以想象的出来自定义窗体外观是怎么实现的了。
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html

V3.7 版已发布,下载地址:https://github.com/JackJiang2011/beautyeye
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html
mac os上,对话框透明怎么设置,中间黑色部分 屏幕快照 2018-05-03 下午11.52.52.png
引用:fengqixueluo 发表于 2018-05-03 23:54
mac os上,对话框透明怎么设置,中间黑色部分

你给BeautyEye设置非透明的窗体边框试试
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html
请问demo的源码有在下载包里吗
引用:nana19930320 发表于 2018-06-06 18:16
请问demo的源码有在下载包里吗

是的
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html
请问是哪个文件夹。。。抱歉我找了好久没找到。。。求大神告知谢谢啊!!!
引用:nana19930320 发表于 2018-06-06 21:20
请问是哪个文件夹。。。抱歉我找了好久没找到。。。求大神告知谢谢啊!!!


这不就是吗
WX20180606-225936@2x.png
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html
附录14有源码嘛?版主
引用:rookie 发表于 2018-08-07 11:13
附录14有源码嘛?版主

自已加一层new JPanel()就好了
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html
想问在线api里面是有些没实现嘛?
看了一下源码
<li>程序包</li>
<li>类</li>
<li>使用</li>
<li><a href="overview-tree.html">树</a></li>
<li><a href="deprecated-list.html">已过时</a></li>
<li><a href="index-files/index-1.html">索引</a></li>
<li><a href="help-doc.html">帮助</a></li>
程序包、类、使用没有<a>标签啊qwq
引用:玖臻丶 发表于 2018-10-17 13:22
想问在线api里面是有些没实现嘛?
看了一下源码
程序包

你说的是什么,截个图
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html
引用:JackJiang 发表于 2018-10-17 13:39
你说的是什么,截个图

就是这些标签ovo
2018-10-17_140750.png
2018-10-17_140812.png
2018-10-17_140832.png
引用:玖臻丶 发表于 2018-10-17 14:10
就是这些标签ovo

这些标签是javadoc工具自动生成的,不是自已加的
签名: 《IM里“附近的人”功能实现原理是什么?如何高效率地实现它?》http://www.52im.net/thread-2827-1-1.html
引用:JackJiang 发表于 2018-10-17 14:39
这些标签是javadoc工具自动生成的,不是自已加的

噢噢噢,这样,好滴,谢谢解答啦!
在某单个页面设置成无边框,怎么才能生效。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部