- 浏览: 427464 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
wufeipeng2001:
结果呢?
数据源 -
ivan:
这样可以。jstl好傻。用grails没有这个问题。
jstl fn:replace替换换行符 -
396063616:
怎么解决的?
android学习之android.content.res.Resources$NotFoundException: File res/drawable/ -
Rinoajun:
多谢楼主,和你遇到了同样的问题
jstl fn:replace替换换行符 -
hellostory:
tanghanlin 写道这样也可以,在安装插件时,勾选:Co ...
eclipse报错Missing Constraint: Require-Bundle: org.eclipse.emf.transaction;
这几天打算写一个swing的程序,对于swing的look and feel比较感兴趣,进行了一小部分的研究。首先对于设置look and feel开发,首先查看设置程序。
try {
UIManager.setLookAndFeel(new CustomLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
throw new RuntimeException(e);
}
基本的代码就是如此,研究一下代码
1。CustomLookAndFeel,主要是编写的Look and feel的类,其中在jdk中的javax.swing.plaf中定义了一些抽象类,javax.swing.plaf.basic中定义了一些基本的扩展。如果自定义laf,建议扩展javax.swing.plaf.basic中的类,这样可以只是扩展自己需要的内容,不用全部重新编写,后面再看如何自定义laf。
2。UIManager.setLookAndFeel中主要是将laf动态修改。他执行的代码主要如下内容:
1)验证是否支持的laf,主要是执行laf中的isSupportedLookAndFeel方法进行验证。
2)从线程中取LAFState,其中数组中定义的第一个是uidefaults,第二个定义的是systemdefault
3)调用look and feel的initialize方法进行初始化,初始化以后根据初始化的情况设置LAFState的缺省值,调用laf的getDefaults方法。
4)发布look and feel变更的消息
Look And Feel的扩展代码研究,以MetalLookAndFeel为研究目标进行有研究。
1。首先MetalLookAndFeel的实例化
2。调用initialize方法,子类没有定义,跳过
3。制定getDefaults方法,由于BasicLookAndFeel方法定义了一个执行的集合,代码如下
initClassDefaults(table);
initSystemColorDefaults(table);
initComponentDefaults(table);
4。执行的顺序如下,首先定义缺省类,方法体的定义如下
Object[] uiDefaults = {
"ButtonUI", metalPackageName + "MetalButtonUI",
"CheckBoxUI", metalPackageName + "MetalCheckBoxUI",
"ComboBoxUI", metalPackageName + "MetalComboBoxUI",
"DesktopIconUI", metalPackageName + "MetalDesktopIconUI",
"FileChooserUI", metalPackageName + "MetalFileChooserUI",
"InternalFrameUI", metalPackageName + "MetalInternalFrameUI",
"LabelUI", metalPackageName + "MetalLabelUI",
"PopupMenuSeparatorUI", metalPackageName + "MetalPopupMenuSeparatorUI",
"ProgressBarUI", metalPackageName + "MetalProgressBarUI",
"RadioButtonUI", metalPackageName + "MetalRadioButtonUI",
"ScrollBarUI", metalPackageName + "MetalScrollBarUI",
"ScrollPaneUI", metalPackageName + "MetalScrollPaneUI",
"SeparatorUI", metalPackageName + "MetalSeparatorUI",
"SliderUI", metalPackageName + "MetalSliderUI",
"SplitPaneUI", metalPackageName + "MetalSplitPaneUI",
"TabbedPaneUI", metalPackageName + "MetalTabbedPaneUI",
"TextFieldUI", metalPackageName + "MetalTextFieldUI",
"ToggleButtonUI", metalPackageName + "MetalToggleButtonUI",
"ToolBarUI", metalPackageName + "MetalToolBarUI",
"ToolTipUI", metalPackageName + "MetalToolTipUI",
"TreeUI", metalPackageName + "MetalTreeUI",
"RootPaneUI", metalPackageName + "MetalRootPaneUI",
};
table.putDefaults(uiDefaults);
定义了空间委派的UI对象的实现类
5。设置系统属性,也就是颜色的属性,代码如下
MetalTheme theme = getCurrentTheme();
Color control = theme.getControl();
Object[] systemColors = {
"desktop", theme.getDesktopColor(), /* Color of the desktop background */
"activeCaption", theme.getWindowTitleBackground(), /* Color for captions (title bars) when they are active. */
"activeCaptionText", theme.getWindowTitleForeground(), /* Text color for text in captions (title bars). */
"activeCaptionBorder", theme.getPrimaryControlShadow(), /* Border color for caption (title bar) window borders. */
"inactiveCaption", theme.getWindowTitleInactiveBackground(), /* Color for captions (title bars) when not active. */
"inactiveCaptionText", theme.getWindowTitleInactiveForeground(), /* Text color for text in inactive captions (title bars). */
"inactiveCaptionBorder", theme.getControlShadow(), /* Border color for inactive caption (title bar) window borders. */
"window", theme.getWindowBackground(), /* Default color for the interior of windows */
"windowBorder", control, /* ??? */
"windowText", theme.getUserTextColor(), /* ??? */
"menu", theme.getMenuBackground(), /* Background color for menus */
"menuText", theme.getMenuForeground(), /* Text color for menus */
"text", theme.getWindowBackground(), /* Text background color */
"textText", theme.getUserTextColor(), /* Text foreground color */
"textHighlight", theme.getTextHighlightColor(), /* Text background color when selected */
"textHighlightText", theme.getHighlightedTextColor(), /* Text color when selected */
"textInactiveText", theme.getInactiveSystemTextColor(), /* Text color when disabled */
"control", control, /* Default color for controls (buttons, sliders, etc) */
"controlText", theme.getControlTextColor(), /* Default color for text in controls */
"controlHighlight", theme.getControlHighlight(), /* Specular highlight (opposite of the shadow) */
"controlLtHighlight", theme.getControlHighlight(), /* Highlight color for controls */
"controlShadow", theme.getControlShadow(), /* Shadow color for controls */
"controlDkShadow", theme.getControlDarkShadow(), /* Dark shadow color for controls */
"scrollbar", control, /* Scrollbar background (usually the "track") */
"info", theme.getPrimaryControl(), /* ToolTip Background */
"infoText", theme.getPrimaryControlInfo() /* ToolTip Text */
};
table.putDefaults(systemColors);
定义了主题,根据主题进行设定
6。定义了系统的组件属性,代码太多,不在粘贴
组件渲染,以JButton为例进行分析
1。首先JButton执行updateUI
2.通过代码setUI((ButtonUI)UIManager.getUI(this));进行设置,他主要是通过UIManager的getUI取得对象匹配的UI对象,这个地方主要是从laf中的定义进行匹配,然后设置
发表评论
-
导入jme3的Unknown data type: uint64_t
2012-07-17 17:44 1306今天使用blender编辑了一个场景导入到jme3的工程中,结 ... -
JDK1.3 中的本地绘制支持
2012-07-12 12:36 912转帖:http://www.sudu.cn/info/inde ... -
jdk-6u29 导致 tomcat 启动时卡死
2012-04-05 11:14 2004这几天tomcat在启动的时候来时在连接数据库的时候就停止了, ... -
eclipse查看jar对应的源代码
2012-03-16 11:16 1069在eclipse种关联jar文件对应的源代码的方法如下 右键 ... -
eclipse解析xml提示错误
2011-10-10 22:03 1790在代码种需要用到 import com.sun.org.ap ... -
eclipse学习点滴
2011-07-22 16:44 1068近一段事件在研究eclipse,记录点滴,防止忘记 1.带调 ... -
gef学习好去处
2011-07-02 22:33 929http://blog.csdn.net/evilinside ... -
GEF 请求和编辑策略
2011-07-02 21:59 1253近期打算做界面定义的 ... -
JPA的Hibernate实现的eclipse插件
2011-01-26 11:22 1492http://objectgeneration.com/upd ... -
Netbeans响应慢的原因
2011-01-06 21:42 1538转载:Netbeans响应慢的原因 现象:当 ... -
netbean 扩展的几个扩展点
2011-01-04 21:56 1013NbPreferences.forModule(RibbonL ... -
jboss 学习security
2010-12-25 23:01 1067jboss的安全控制主要包括了下面几个部分 <doma ... -
HornetQ 架构
2010-12-25 22:20 1647核心架构 HornetQ核心设计为多个POJO的集合,他一来 ... -
HornetQ 消息概念
2010-12-25 21:24 1903消息传递保证 大多数 ... -
JBoss将common下的lib放入classspath
2010-12-25 09:45 1348这几天在进行jboss下的开发,那的最小的容器本来想一点一点的 ... -
jboss学习 - vfs
2010-12-12 12:19 7362jboss的VFS是为了解决什么问题,他为什么有用呢 在jb ... -
jboss6 profile配置原理
2010-12-09 23:29 2316今天仔细分析了一下jbos ... -
Jboss5学习Deployment callbacks
2010-12-08 20:39 1254这个地方思维模式比较新颖,这里翻译一下: 有时候 ... -
jboss的bean声明周期名称
2010-12-08 18:03 967bean在解析到使用总共经过了如下的状态变化阶段 PreP ... -
jboss学习 - 程序生成配置代码分析
2010-12-08 14:13 1104以前使用spring已经习惯里,现在研究了一下jboss的微内 ...
相关推荐
在Java中,可以通过调用`javax.swing.UIManager`类的方法来设置LookAndFeel。例如,要设置为Mac风格的LookAndFeel,可以使用以下代码: ```java try { UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel")...
Swing Look and Feel是Java GUI库的一个重要特性,它允许开发者改变Java应用程序的用户界面外观和感觉,使得桌面应用能够呈现出不同的风格,如Windows、Mac OS X或自定义的3D样式。在Java Swing中,Look and Feel...
java swing 中通过UIManager.setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel()); JFrame.setDefaultLookAndFeelDecorated(true); //设置主题 SubstanceLookAndFeel.setCurrentTheme(new ...
Swing Look and Feel是Java Swing库中的一个重要概念,它决定了应用程序的用户界面外观和交互体验。在Java中,Look and Feel(简称L&F)是一种可定制的机制,允许开发者改变程序的图形用户界面(GUI)风格,以适应...
Java Look and Feel(L&F)是Java Swing中一个关键的概念,它定义了用户界面的视觉样式和交互体验。在Java应用程序中,Look and Feel决定了控件如按钮、文本框、菜单等的外观和感觉,使得程序可以在不同的操作系统上...
在Java的Swing库中,Look and Feel(简称LookAndFeel)是一种设计工具,它允许开发者改变应用程序的用户界面...同时,提供的这些zip文件可以作为实践和学习的例子,帮助开发者深入理解和应用Swing的LookAndFeel特性。
有以下十种风格可以设置: javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.smart.SmartLookAndFeel"); javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mcwin.McWinLookAndFeel"); ...
开发者可以通过LookAndFeel类提供的方法来设置和获取当前的LookAndFeel。 2. **系统LookAndFeel**:Java提供了几种内置的LookAndFeel,包括跨平台的MetalLookAndFeel和与操作系统集成的WindowsLookAndFeel、...
本篇文章将深入探讨Look and Feel的概念,以及如何在Swing中实现换肤。 首先,Look and Feel是Java图形用户界面(GUI)组件的外观和行为的一套规则。Java提供了多种内置的LAF,包括WindowsLookAndFeel、...
java swing Mac风格的look and feel包,美化程序界面,含有使用说明和效果图,不好意思,这个上传时选错了文件,哈哈,不要下载了,正确的文件查另一个我的上传
Java Look and Feel(简称L&F)是Java Swing框架中一个重要的概念,它指的是用户界面的外观和交互特性。通过Java Look and Feel,开发者可以为Swing组件定制各种外观和行为,从而创建一致且美观的用户界面。本文旨在...
本项目"Java Swing Look and Feel Demonstration"专注于展示Swing内建的各种Look and Feel效果。它通过一个名为AppLNFDemo的应用程序,直观地呈现了各种常见控件(如按钮、文本框、列表、表格等)在不同L&F风格下的...
Java Look and Feel(Java外观)是Java Swing库中的一部分,用于改变Java图形用户界面(GUI)应用程序的视觉样式。在Java GUI程序中,LookAndFeel管理组件的显示方式,包括颜色、字体、图标以及交互行为。Java提供了...
Nimrod Look and Feel是一款高度可定制的Java Swing组件库,它允许开发者根据自己的需求调整颜色方案和控件样式。Swing是Java的标准GUI库,提供了丰富的组件供开发者构建桌面应用。Nimrod LAF(Look and Feel)的...
通过学习这个示例,你可以了解如何在Java中实际应用MVC模式,以及如何自定义和管理LookAndFeel。 在实践中,MVC模式可以帮助我们更好地组织代码,降低耦合度。LookandFeel的使用则能提升用户体验,让应用看起来更加...
在Java中,创建自定义LookAndFeel通常涉及继承`javax.swing.plaf.ComponentUI`或其子类,并覆盖相关的方法来定义组件的绘制逻辑。 SwingSet2.jar可能是一个示例程序,用于演示Swing组件以及如何应用自定义的LookAnd...
要在应用程序中启用JGoodies Swing LOOK&FEEL,开发者需要首先在类路径中包含JGoodies的相关库文件,然后在程序启动时设置LOOK&FEEL。这通常通过调用`UIManager.setLookAndFeel()`方法完成,并传入对应的LOOK&FEEL...
2. 在更改LookAndFeel之前,最好先保存当前的LookAndFeel设置,以便在需要时恢复。 3. 更改LookAndFeel可能会引发UI组件的重新布局,因此在切换皮肤时,应在事件调度线程(Event Dispatch Thread, EDT)中进行。 4. ...
设置Swing的LookAndFeel ——windows风格 笔记
**JGoodies Look and Feel** 是一款开源的Java Swing组件库,它提供了丰富的用户界面(UI)外观和感觉,使得开发者能够为Java应用程序定制出更加美观、统一且具有跨平台一致性的用户界面。JGoodies Look and Feel是...