您的位置: 新闻频道 Java新闻

原创新闻 用CSS来美化Java桌面--Javacss

2008-07-24 by 正式记者 ham
评论(20) 有4036人浏览 javacss
CSS可以用来修饰HTML网页。
但你有没有想过,使用CSS也可以修饰Java桌面呢。现在这种想法也得以实现了。Java社区的一个开源项目-Javacss,就实现了这种功能,以css来修饰Java桌面,如Swing,JavaFX应用程序。
//example.css文件:
Component {//所有Component控件都使用的样式。
  font-family: "SansSerif";
  font-size: 14pt;
  font-weight: normal;
}

JLabel#title {//name为title的JLable使用的样式。
  font-size: 200%;
  font-weight: bold;
  foreground: #0099ff;
  border: etchedBorder;
}

JButton:mouseover {//鼠标移到JButton之上时使用的样式。
  font-weight: bold;
}

JButton.toolbar {//使用样式名为toolbar的使用的样式。
  text: null;
}


在使用的时候,可以通过以下方式进行调用。
FileReader in = new FileReader("example.css");
Stylesheet stylesheet = new Stylesheet(in);
in.close();
stylesheet.applyTo(mainFrame);

Stylesheet是Javacss库中的一个类,用来生成样式表。
applyTo()用于将css样式表绑定到指定的控件上去。

帮助文档可以在这里看到:https://javacss.dev.java.net/docs/javadoc/overview-summary.html
类库的下载地址为: https://javacss.dev.java.net/servlets/ProjectDocumentList

评论 共 20 条 发表评论

fight_bird 2008-07-25 23:18
很有前途的桌面技术,不过这个版本也太低了——0.2。
ham 2008-07-25 15:19
TipCalculator就是theFrame.
编辑回复的时候没注意。
都是一个JFrame的对象。再一次向大家道歉。
ham 2008-07-25 15:16
我承认我编辑新闻的时候没有认真.上面的调用方法是错误的.
刚才打开例子的源代码看了一下调用的方法.发现Stylesheet类里面确实没有参数为FileReader的构造函数.

正确的调用方法应该是这样的:
Stylesheet style = CSSParser.parse(TipCalculator.class.getResource("stylesheet.css"));
style.applyTo(theFrame);

其中
public URL getResource("stylesheet.css");
getReasource()是属于class类的一个方法.接收一个名称.然后返回指定的URL类的对象.
CSSParse.parse(URL url);//传入一个URL对象.然后根据指定的文件生成一个Stylesheet对象.
style.applyTo(theFrame);//将指定的样式绑定到theFrame控件上.


在这里给大家说声对不起了。
zsyao 2008-07-25 14:23
例子有问题吧
Stylesheet()
          Creates a new stylesheet which contains no rules.
Stylesheet(java.util.Collection<Rule> rules)
          Creates a stylesheet from a collection of rules.
Stylesheet(Rule[] rules)
          Creates a stylesheet from an array of rules.

构造函数里没有实现FileReader参数的呀.
Stylesheet stylesheet = new Stylesheet(in);
dircxy007 2008-07-25 13:41
老树发新枝,不错!
tvjody 2008-07-25 13:19
像WEB应用一样,用CSS美化Appliction应用,这个方式很好,很实用。如果能用CSS样式定制桌面应用程序的界面,包括整个容器、控件的样式定义,那么真的很棒。
ham 2008-07-25 11:33
FileReader in = new FileReader("example.css");  
Stylesheet stylesheet = new Stylesheet(in);  
in.close();  
stylesheet.applyTo(mainFrame);  


但主页上就是这么调用的啊...难道Javacss主面的介绍有问题?
https://javacss.dev.java.net/docs/overview.html
dracularking 2008-07-25 10:37
com.sun.stylesheet.Stylesheet这包中有能接受Reader型参数的Stylesheet构造方法?怎么doc中没有 只有Rules和Collection的
rmn190 2008-07-25 10:27
虽说现在用不到,但很有新意.
fengzhiyu_sh 2008-07-25 08:44
不错! 有空学习学习
lishali12345 2008-07-24 23:02
这样确实好多了!
就应该实现这样的独立性!
tedeyang 2008-07-24 22:30
以前看到过一个东东,叫CSS Swing
KKFC 2008-07-24 21:13
css很合理。美工MM多了项学习内容了 呵呵
寻找出路的苍蝇 2008-07-24 17:50
很好很强大。
我们也用到了通过CSS来设置Java控件的外观, 不过我们是基于SWT。
ham 2008-07-24 15:44
引用
有XUL在那,无视啊

XUL是构造界面的..Javacss是美化界面的.

难道你用HTML写了页面.把css全用标签的style属性带进去?
分离开来不是更好么?
fkpwolf 2008-07-24 14:33
有XUL在那,无视啊
troyconder 2008-07-24 14:32
模仿QT
鹤惊昆仑 2008-07-24 13:12
flex..
ham 2008-07-24 11:59
第一个代码的注释应该是example.css
写错了,不好意思。

我这里所列的只是最基本的一些用法。更多的信息可以到javacss的主页上看得到。
ln1058 2008-07-24 11:50
很好,很强大!!

发表评论

您还没有登录,请登录后发表评论