- 浏览: 138319 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yaoweinan:
没有.....
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
马文涛:
我也发现这个问题了,你找到解决办法了吗?
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
coding1688:
博主辛苦了,也可以参考一下这篇文章:四步轻松搞定瀑布流布局ht ...
瀑布流布局个人实现 -
yaoweinan:
嘿嘿,那个只是最笨的办法,实际上是不行的,现在一般的都有sw ...
文件上传(无刷新,带进度条,带网速)下载完整 -
javazzu:
我为啥不行呢
文件上传(无刷新,带进度条,带网速)下载完整
JXLayer 是一个很好的Swing 控件装饰类库,其主要要的优点在于将修饰的一些UI与原本的UI 实现了很好的分离,便于操作和管理。
下面简单介绍一下几个常用的使用方法(API:http://www.jarvana.com/jarvana/view/org/swinglabs/jxlayer/3.0.4/jxlayer-3.0.4-javadoc.jar!/index.html)
JXLayer 此类对象是我们使用JXLayer 最终要使用的对象,其作用就像一个中间件,将我们自己的UI和单独定义的LayerUI 结合在一起,达到最终要的结果。
LayerUI 此类 与XLayer 结合,在LayerUI 的paint 方法中画出你要修饰的图案。并且在这个里面可以监听到控件的事件,这个需要重写eventDispatched(AWTEvent, JXLayer)
LockableUI 此类提供了锁定控件的功能,在以前如果你设置一个JCompent enable 为false,它的子控件依然可以被使用,而此类可以完全实现,并对鼠标图标可以进行自定义。
SpotLightUI 此类简单的说就是在控件上面加一个罩子,可以设置颜色等等。
DebugRepaintingUI 这个类的功能很2, 它能实现的是显示哪些UI 被重画了,相当一个debug 效果。
JScrollPane 这个类提供的功能是鼠标中间键按住之后拖动 可以拖动scrollbar 的效果,可惜在3.0.4版本中我新加的控件不知道哪里去了。
ButtonPanelUI 这个类能干事么? 用了之后没感觉到:(
下面写了一个简单的UI 使用插件
package lyon.study.jxlayer; import java.awt.Color; import java.awt.Cursor; import java.awt.Graphics; import java.util.HashMap; import java.util.Map; import javax.swing.JComponent; import javax.swing.JScrollPane; import org.jdesktop.jxlayer.JXLayer; import org.jdesktop.jxlayer.plaf.LayerUI; import org.jdesktop.jxlayer.plaf.ext.ButtonPanelUI; import org.jdesktop.jxlayer.plaf.ext.DebugRepaintingUI; import org.jdesktop.jxlayer.plaf.ext.LockableUI; import org.jdesktop.jxlayer.plaf.ext.MouseScrollableUI; import org.jdesktop.jxlayer.plaf.ext.SpotLightUI; public class UIPlug{ private static LayerUI<JComponent> drawRoundRectLayerUI; private static Map<JComponent,LockableUI> lockLayers=new HashMap<JComponent,LockableUI>(); public static JComponent drowRoundRect(final JComponent com){ return new JXLayer<JComponent>(com,getLayerUI()); } private static LayerUI<JComponent> getLayerUI() { drawRoundRectLayerUI=drawRoundRectLayerUI!=null?drawRoundRectLayerUI:new LayerUI<JComponent>(){ /** * Comment for <code>serialVersionUID</code> */ private static final long serialVersionUID = 7131940091813767911L; @Override public void paint(Graphics g, JComponent jComponent) { super.paint(g, jComponent); final int width = jComponent.getWidth(); final int height = jComponent.getHeight(); g.setColor(Color.BLUE); g.drawRoundRect(5,5,width-10,height-10,90,90); g.dispose(); } }; return drawRoundRectLayerUI; } public static JComponent doLockUI(final JComponent com,final boolean isLocked){ LockableUI lockableUI; if(lockLayers.containsKey(com)){ lockableUI = lockLayers.get(com); if(lockableUI!=null){ lockableUI.setLocked(isLocked); } return com; }else{ lockableUI=new LockableUI(); lockableUI.setLockedCursor(Cursor.getDefaultCursor()); lockLayers.put(com, lockableUI); final JXLayer<JComponent> layer = new JXLayer<JComponent>(com, lockableUI); lockableUI.setLocked(isLocked); return layer; } } public static JComponent addColorCoverLayer(final JComponent com){ SpotLightUI spotLightUI = new SpotLightUI(); spotLightUI.setShadowEnabled(true); return new JXLayer<JComponent>(com,spotLightUI); } public static JXLayer<JScrollPane> autoScrollPanel(final JScrollPane com){ return new JXLayer<JScrollPane>(com,new MouseScrollableUI()); } public static JComponent debugPanel(final JComponent com){ DebugRepaintingUI debugUI = new DebugRepaintingUI(); JXLayer<JComponent> layer = new JXLayer<JComponent>(com, debugUI); return layer; } public static JComponent buttonPanel(final JComponent com){ ButtonPanelUI ui=new ButtonPanelUI(); return new JXLayer<JComponent>(com, ui); } }
发表评论
-
写自己的框架,让别人笑掉大牙吧(IOC2)
2013-04-22 14:23 902上篇中主要使用配置文件来定义一些类实例之间的组织关系 ... -
关于java中对象属性值的校验的思考
2013-04-15 14:09 1557现在在java 开发中经常会遇到要交验某个obje ... -
JTextArea ScrollBar 自动滚动
2013-01-11 16:40 999前几天在JScrollPanel 中放了一个JEditorPa ... -
java 动态编译及执行实现Web式java开发
2012-11-29 17:05 923废话不说,让大家等了这么久,先看看截图 : 编译 ... -
MigLayout 使用
2012-11-07 17:03 973如果你还在用用Java 做桌面程序,如果你还在用java ... -
关于Jtextinpt 内容的限制
2012-09-28 15:00 811在JTextInput 限制输入内容,这个一般的通过按键输入进 ... -
构造中的多态
2012-08-25 23:19 856各位仁兄,前几日我在 ... -
Swing JtableModel 使用之旅
2012-07-29 03:25 1031JTable 是我们一般展示数据的一个很好的Grid组建,个人 ... -
模版模式(TemplatePattern)
2012-07-15 11:08 797模版模式分为2个部分 1.抽象模版 2.具体模版 ... -
JTable 使用简要说明
2012-07-02 16:30 887JTable 是swing 包中提供显示二维表的控件,一般被 ... -
java awt 布局
2012-07-01 17:50 1291汗颜啊,昨天到今天写一个awt界面,布局差点把人恶心死,现在总 ... -
门面模式(Facade Pattern)
2012-06-10 19:37 988门面模式(Facade Pattern):门面模式在我个人感觉 ... -
代理模式例子
2012-06-04 15:07 987代理模式简单点就和现实中一样,只是代理实质性的还是别人在做。比 ... -
策略模式应对旅行中出现的问题
2012-06-04 14:21 887策略模式是针对在进行过程中出现一些问题的应对模式。一般可以分为 ... -
java 工厂模式简单介绍及例子
2012-06-03 23:16 1065java中工厂模式在java ee中经常碰见,是一种常见的模式 ... -
java 动态代理及自定义标注使用例子
2012-06-03 00:14 1237java中动态代理,在实际应用中有着很大的作用,譬如在一些类似 ... -
flex3 socket+java
2012-02-06 12:10 1089首先解决的问题是flex的沙箱问题,由于flex 连接服务器存 ... -
java 自定义注解
2012-01-30 16:09 835写道 package com.my;import j ... -
图片裁剪,缩放 批处理
2012-01-07 15:25 1024package dwr.demo; import ... -
java System.Properties
2011-10-26 13:19 749使用Properties.getProperty方法的参数也可 ...
相关推荐
例如,你可以使用JXLayer实现拖放操作、透明度调整、图形过滤器等高级特性。JXLayer通过装饰器模式将这些增强功能应用于任何标准的Swing组件,无需修改原始组件代码。 2. **BusyPainterDemo**: `BusyPainterDemo....
3. **示例代码**:以下是一个简单的示例,展示了如何使用`SwingUtilities.invokeLater()`方法来更新Swing组件: ```java import javax.swing.SwingUtilities; import javax.swing.JLabel; public class ...
8. **JXLayer**:这是一个透明层组件,允许在现有组件上添加额外的行为或视觉效果,例如鼠标覆盖提示、动画效果等。 9. **JXStatusBar**:增强了Swing的JStatusBar,提供更多定制选项和组件集成。 10. **...
在图片操作方面,SwingX的组件可能用于显示和编辑图像,例如使用JXImageView来展示图片,或者利用JXLayer提供图像效果和交互性。 **3. SLF4J (Simple Logging Facade for Java)** 虽然SLF4J在文件列表中,但它主要...
swing gui 的一个demo文件包,可以直接下载使用,方便布局控件