`
anysky131
  • 浏览: 175014 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用CSS美化你的桌面二---CSSEngine

    博客分类:
  • GUI
阅读更多
上一文章说到了javaCSS,这个东西深研究后,觉得很不好,里面的东西不太健全.出现了很多问题,最后重新选择了CSSEngine这个东西.研究了一下,这个东西不错,很不错.可以让你自己定义各种样式的格式,而且很智能化,比如没有找到在css文件中定义的样式组件,它不会报错,只是不使用这个样式罢了,而且javaCSS则会报空.
好了,详细说一下这个东西的用法吧.....
先说下这个东西的官方:
http://tk-ui.sourceforge.net/user-guide/cssengine/cssengine.html
从这里开始,你可以学会它.
里面有包的下载,源码的下载,例子的代码....
然后贴个封装的代码吧:

CSSSwingResources.java

import java.io.InputStream;

/**
 * 获取CSS文件
 * */
public class CSSSwingResources {

	/**
	 * 获取默认样式
	 * */
	public static InputStream getDefaultStyle(){
		return CSSSwingResources.class.getResourceAsStream("style/default.css");
	}
	
	/**
	 * 获取Matrix样式
	 * */
	public static InputStream getMaxtrixStyle(){
		return CSSSwingResources.class.getResourceAsStream("style/Matrix.css");
	}
	/**
	 * 获取OSX样式
	 * */
	public static InputStream getOsxStyle(){
		return CSSSwingResources.class.getResourceAsStream("style/Osx.css");
	}
	
	/**
	 * 获取Vista样式
	 * */
	public static InputStream getVistaStyle(){
		return CSSSwingResources.class.getResourceAsStream("style/Vista.css");
	}
}


AddCss.java
这是对多个 css文件进行封装的代码:进行实例化后,可以使用addCss(Object obj,boolean style)方法,进行一个样式的启用.

import java.io.IOException;

import org.akrogen.tkui.css.core.engine.CSSEngine;
import org.akrogen.tkui.css.swing.engine.CSSSwingEngineImpl;

/**
 * 为组件添加CSS样式绑定类
 */
public class AddCss {

	/**
	 * 样式的种类
	 */
	private static final int DEFAULT_STYLE = 1;
	private static final int MAXTRIX_STYLE = 2;
	private static final int OSX_STYLE = 3;
	private static final int VISTA_STYLE = 4;

	private static CSSEngine css = new CSSSwingEngineImpl();

	public AddCss(int style) throws IOException {
		switch (style) {
		default:
			css.parseStyleSheet(CSSSwingResources.getDefaultStyle());
		case DEFAULT_STYLE:
			css.parseStyleSheet(CSSSwingResources.getDefaultStyle());
		case MAXTRIX_STYLE:
			css.parseStyleSheet(CSSSwingResources.getMaxtrixStyle());
		case OSX_STYLE:
			css.parseStyleSheet(CSSSwingResources.getOsxStyle());
		case VISTA_STYLE:
			css.parseStyleSheet(CSSSwingResources.getVistaStyle());
		}
	}

	/**
	 * 打开样式表,直接整个窗口的样式变化,每一个窗口中要想使用样式,在窗口初使化后,调用此方法
	 * 
	 * @param obj
	 *            Object 使用样式的窗口
	 * @param isStyle
	 *            boolean 是否使用样式
	 * 
	 */
	public void addCss(Object obj, boolean isStyle) {
		css.applyStyles(obj, isStyle);
	}

}





测试例子代码:
MainFrameTest.java测试主窗口
/**
 * 对于CSSEmgine的测试类
 * */
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainFrameTest {

	private JFrame frame;

	/**
	 * Launch the application
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MainFrameTest window = new MainFrameTest();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application
	 */
	public MainFrameTest() {
		createContents();

	}

	/**
	 * Initialize the contents of the frame
	 */
	private void createContents() {

		// 主窗口需要绑定样式的话,就要添加以下代码
		AddCss css = null;
		try {
			css = new AddCss(1);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		frame = new JFrame();
		frame.setBounds(100, 100, 330, 170);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		final JPanel panel = new JPanel();
		panel.setLayout(null);
		frame.getContentPane().add(panel, FlowLayout.LEFT);

		final JButton button = new JButton();
		button.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent arg0) {
				DialogTest dialog = new DialogTest();
				dialog.setVisible(true);
			}
		});
		// 使用总的样式,不需要设置名字
		button.setText("使用总的样式");
		button.setBounds(80, 22, 145, 28);
		panel.add(button);

		// 需要单独使用一个样式,则需要设置名字,然后在css文件中单独定义一个样式
		final JButton button_1 = new JButton();
		button_1.setText("单独设置一个样式");
		button_1.setName("aaa");
		button_1.setBounds(80, 70, 145, 28);
		panel.add(button_1);
		// 开启样式
		css.addCss(frame, true);

	}

}

DialogTest.java测试JDialog

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

import com.jgoodies.forms.factories.DefaultComponentFactory;

/**
 * 对方法进行使用测试
 * 
 * @author 陆健美
 */
public class DialogTest extends JDialog {

	/**
	 * Launch the application
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					DialogTest dialog = new DialogTest();
					dialog.addWindowListener(new WindowAdapter() {
						public void windowClosing(WindowEvent e) {
							System.exit(0);
						}
					});
					dialog.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the dialog
	 */
	public DialogTest() {
		super();
		setBounds(100, 100, 278, 178);

		// JDialog需要绑定的话,也要对AddCss进行实例化
		AddCss css = null;
		try {
			css = new AddCss(1);
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		final JPanel panel = new JPanel();
		panel.setLayout(null);
		getContentPane().add(panel, BorderLayout.CENTER);

		final JButton button = new JButton();
		button.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent e) {
			}
		});
		button.setText("测试一个组件");
		// 为组设置一个名称,就可以对其进行绑定了
		button.setName("button");
		button.setBounds(54, 26, 158, 28);
		panel.add(button);

		final JLabel label = DefaultComponentFactory.getInstance().createLabel(
				"测试一个label");
		label.setBounds(69, 71, 101, 18);
		panel.add(label);
		//

		// 开启样式
		css.addCss(this, true);
	}

}



再附上使用说明,也就全了
CSS Engine使用说明:
使用CSSEngine  需要做三个工作:
第一个,需要在每个要绑定样式的组件上,使用setName("你的组件的名字"),或者putClientProperty("class", "你定义的样式class");
第二个,需要在相关的default.css(这里最好是每个样式文件都写上)文件中,添加你的组件与名字:
    eg:
           JLabel#aaa{
              可由美工设计样式具体内容
           }
          
           
第三,在所用的窗口中,使用如下代码:
    窗口初使化前添加:AddCss css = new AddCss(int style)来初使化哪个样式文件,这个style可以在主窗口中,使用一个全局变量,来整体控制.
    窗口初使化后添加:css.addCssByFile(Object obj,boolean isStyle)来启用样式.传入窗口(JFrame,JDialog)
    
    
    
    
     * <li>对于这里的style样式的书写格式:
     (1) 
	 * <li>组件使用setName()设置唯一的名字(aaa,bbb), 如果不添加(#aaa)的话,用于窗口中所有JLabel
	 * <li>JLabel#aaa {color:red;} JTextField#bbb{background-color:green;}
	 (2)
	 * <li>当组件使用putClientProperty("class", "blueClass");方法时
	 * <li>.blueClass {color:blue;} .greenClass {color:green;}
	 
	 
使用时,它只对绑定的窗口有用,没有绑定的窗口不起作用.在css文件中定义的,找到名字的有用,没有找到名字的,有全局的,使用全局,没有全局,不起作用.
	 


最后说明,它还有很多种样式的使用方式,不会低于html中的css,很强大,有兴趣的人,可以好好研究研究啊...这里只起个抛砖引玉的作用..
有问题的话,欢迎拍砖啊
再为不喜欢写代码的人,贴个源码吧.
  • css.rar (5.7 KB)
  • 下载次数: 172
分享到:
评论
4 楼 anysky131 2009-01-09  
呵呵,上一文章是我blog里的一个,那个是使用javaCSS组件的。写在我的blog里了。
3 楼 sdh5724 2009-01-08  
哈, 不错的UI render Engine
2 楼 bright82 2009-01-07  
anysky131 写道
上一文章说到了javaCSS,
.................
再为不喜欢写代码的人,贴个源码吧.


看了下你的文章数为:1,何来上一文章之说
1 楼 new20080601 2009-01-07  
谢谢,很不错哈哈,我喜欢UI开发

相关推荐

    swing 结合css

    令人惊喜的是,Swing也支持使用CSS来定制组件的外观,使得桌面应用也能拥有类似网页的美化效果。 在Swing中结合CSS,主要是通过JavaFX的WebEngine类实现的。JavaFX提供了一个名为`WebEngine`的类,它允许在Swing...

    网页可交互桌面放假倒计时桌面背景

    此外,为了在桌面上运行HTML内容,可能需要使用特定的桌面应用或工具,如Wallpaper Engine,它允许用户将HTML5内容设置为动态壁纸。 总的来说,"网页可交互桌面放假倒计时桌面背景"是一个结合了Web开发技术和桌面...

    用html和css写个四级必过

    **CSS美化与布局** CSS则用于给HTML内容添加样式和控制布局。例如,可以使用`color`属性改变文字颜色,`font-size`调整字体大小,`background-color`设定背景色,`padding`和`margin`控制元素内外边距,`display`...

    Resume:一个简单的html-css模板,用于创建和维护简历

    2. CSS基础与美化: CSS(Cascading Style Sheets)用于控制网页的样式和布局。这个模板利用CSS来定制颜色、字体、间距、布局以及响应式设计。开发者应熟悉选择器(如类选择器`.class`、ID选择器`#id`、元素选择器`...

    resume-demo:用html css和js构建的简历

    **CSS美化** CSS(Cascading Style Sheets)负责控制网页的样式和布局。在这个简历项目中,CSS用于设定字体、颜色、背景、边距、布局等视觉效果。例如,`color:`属性改变文本颜色,`font-size:`调整字体大小,`...

    Task7-百度首页制作.rar

    综上所述,"Task7-百度首页制作"涵盖了从HTML结构到CSS美化,再到JavaScript交互的全栈网页开发知识,同时也涉及到响应式设计、图像处理、SEO优化以及浏览器兼容性等多个方面。通过完成这样的任务,不仅可以提升网页...

    新闻列表 3-20 bt 思想

    2. CSS美化:为了使新闻列表更具视觉吸引力,我们通常会使用CSS(Cascading Style Sheets)进行样式设置。这包括设置字体、颜色、背景、边距、对齐方式等。例如,可以使用`list-style-type`属性改变列表项符号,`...

    Flex4-in-a-day

    同时,CSS(层叠样式表)的引入和Flex Themes(主题)的创建和应用,也使得界面的美化和风格统一变得更加容易。 文档详细讲解了Spark组件的概念和Skinning Contract(皮肤协议),即如何对Spark组件进行皮肤定制。...

    vimix-gtk主题:Vimix是GTK 3,GTK 2和Gnome-Shell等的平面材料设计主题

    总而言之,Vimix GTK主题是一个全方位的桌面美化方案,涵盖了多种GTK版本和Gnome-Shell,确保在不同环境下都能提供一致且美观的界面。通过下载并安装`vimix-gtk-themes-master`压缩包,Linux用户可以轻松地为自己的...

    Sierra-gtk主题:MacOS High Sierra像GTK 3,GTK 2和Gnome-Shell等的主题

    总之,Sierra-gtk主题是一个为Linux用户精心打造的桌面美化方案,它融合了MacOS High Sierra的美学理念,使Linux桌面环境变得更加现代化和精致。无论是在GTK 3、GTK 2还是Gnome-Shell上,都能感受到一致的高质感界面...

    [新闻文章]iwas文本html文章程序心中的星美化版_iwashtmlnewsxzdx.zip

    6. **SEO优化**:为了提高搜索引擎的可见性,程序可能集成了一些SEO(Search Engine Optimization)策略,如元标签(meta tags)的使用,标题和描述的优化,以及合理的URL结构,帮助新闻文章在搜索结果中获得更高的...

    学校实训毕业商用项目-红色家具企业网站模版.zip

    6. **图像优化**:为了提高网页加载速度,通常需要对图片进行优化,例如使用正确的文件格式(JPEG、PNG、SVG等)、压缩图片大小,并利用CSS精灵图(sprites)或懒加载技术来减少网络请求。 7. **SEO(Search Engine...

    个人博客---个人网站

    CSS(Cascading Style Sheets)则是用于美化这些元素的样式表语言,包括颜色、字体、布局等视觉效果。在个人博客中,HTML用于创建文章内容、头部、导航栏、侧边栏等结构,而CSS则用于设计整体风格和交互效果。 2. *...

    静态星座网页

    2. CSS美化 CSS(Cascading Style Sheets)用于控制网页的样式和布局。在静态星座网页设计中,我们可以使用CSS选择器定位HTML元素,然后设置颜色、字体、背景、边框、间距等属性,实现美观的视觉效果。例如,可以...

    个人博客网页

    总结来说,这个个人博客项目涵盖了HTML的基本结构、CSS的美化和布局、JavaScript的交互实现,以及前端开发的一些最佳实践。它是学习和展示前端技能的良好实例,同时也反映出作者对用户体验的关注和追求。

    个人网站模板

    二、CSS美化与布局 CSS(Cascading Style Sheets)用于控制网页的样式和布局。在个人网站模板中,CSS文件决定了颜色、字体、间距、背景以及元素的定位。通过选择器(如ID选择器、类选择器)应用样式,可以实现“可爱...

    N-Booher--Portfolio:多媒体制作类2021的作品集网站

    总之,N-Booher的这个作品集网站涵盖了HTML结构、CSS美化、多媒体处理、响应式设计、交互实现、SEO优化等多个方面的知识,体现了其在网页设计和开发领域的专业技能。通过学习和分析这个网站,可以深入理解一个成功的...

    蓝晶文件

    在涉及到的技术方面,"CSS"标签表明文档内容可能包含有关如何使用CSS(层叠样式表)来定制或美化"蓝晶文档Engine"的用户界面。CSS是Web开发中不可或缺的一部分,用于定义网页或应用程序的布局、颜色、字体等视觉表现...

    portfolio-design

    【CSS美化】 虽然HTML负责内容结构,但呈现样式和视觉效果的任务则由CSS(Cascading Style Sheets)承担。在这个"portfolio-design"项目中,开发者可能使用CSS来定义文本颜色、字体、布局、背景、边距、动画等多种...

    每日随机背景翻页时钟网页

    【每日随机背景翻页时钟网页】是一种创新的网页应用,它将时钟与壁纸功能相结合,为用户提供个性化且互动的桌面体验。这种时钟设计独特,每到一定时间或用户手动触发,时钟界面会像真实的纸质日历一样翻页,展示新的...

Global site tag (gtag.js) - Google Analytics