JAVA软件界面美化
JAVA软件界面美化
使用过JAVA软件的人,很多人会对JAVA软件界面的美观不满意,尽管JAVA Swing 推出了JAVA Look And Feel 机制,但这些JAVA可更换机制的外观目前数量实在太有现(网络上可供下载使用的目前大概有30个),开发、定制也不是很容易,难以满足用户快速多变的个性化需求。(据我所知国人当中目前基本没有开发JAVA Look And Feel 的,前段时间本人使用了 SkinLookAndFeel这个皮肤化的JAVA Look And Feel ,l以为日子会好过,不过最终我失望了:(),毕竟同时是专家级的JAVA程序员又是美术大师的人太少了!
总之,Java Look And Feel 虽然好,但开发不易,难以个性化,根本上来说还是没有代码和视图分离。最理想的状态是什么?应该美术设计师设计图形,程序员开发程序,各不相关,互不牵扯,那才是完美的结果。SkinLookAndFee 在某种程度上其实已经做到,但它在代码的机制上实在不怎么样,可移植性差,皮肤配置不容易。。。等等。(哎,本人刚开始对她是很期望了,不过还是验证了“期望大失望大”这句话)
不过SUN就是这么牛X,其JAVA 5.0已经给了我一个很好的答案,使用Synth吧,
Custom UIs are a breeze with the newest Swing look and feel,让你不用写JAVA代码也可以轻松创建漂亮的JAVA界面。
还等什么,让我们开始Synth时尚之旅行,让你的JAVA软件外观更漂亮吧!注意:本文假定你是个已经入门的JAVA开发者,有基本的JAVA GUI开发经历.如果你现在什么都不懂,也想体验Synth,那就留言吧,我会帮你的.:)。
本文的开发环境是Eclipse3.1+JDK5.0,请记得:如果想使用Syth,那么你必须使用jdk5.0。
首先,让我们美化一个基本JDK组件:按钮(JButton)的外观。
1、在Eclipse开发环境中,建立一个JAVA工程,添加一个一个名为MyButton.java类
2、MyButton.java类的代码如下:
package demo.synth;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MyButton {
JFrame frame = new JFrame("Test Buttons");
JButton jButton = new JButton("JButton"); // 按钮
public MyButton() {
frame.setLayout(new FlowLayout());
ContentPane().add(jButton);
}
public void show() {
frame.pack();
frame.show();
}
public static void main(String[] args) {
MyButton tb = new MyButton();
tb.show();
}
}
该类可直接运行,运行后效果如下图:
3、在以上代码的main()函数中添加以上代码,使得当前程序应用Synth外观,并且加载了l这个配置文件(相当于CSS样式表),因为这个文件的还没有当前按钮的“样式”设置,所以这时候按牛除了文字,什么都没有。外观处于“空白状态”。
main()函数中添加的设置Synth外观的代码:
SynthLookAndFeel slf = new SynthLookAndFeel();
try {
slf.load(ResourceAsStream("l"), MyButton.class);
UIManager.setLookAndFeel(slf);
} catch (Exception e) {
e.printStackTrace();
return;
}
其中,外观样式配置文件l是重点,以后我们的工作就是写这个XML文件的代码,其写法跟CSS样式表基本类似。
l代码:
<synth>
<style id="mybutton">
<state>
<imagePainter method="buttonBackground" path="mybutton.png" sourceInsets="3 6 12 20" paintCenter="true" stretch="true"/>
<insets top="3" left="6" bottom="12" right="20"/>
<font name="Aharoni" size="16"/>
</state>
<property key="Button.margin" type="insets" value="blog.soso/qz.q/0 0 5 8"/>
</style>
<bind type="region" key="Button"/>
</synth>
当前l的代码很简单,只有:<synth/>。这时候程序运行效果如图:(略)
很抱歉,因为您在网易相册发布了违规信息,账号被屏蔽。被屏蔽期间他人无法访问您的相册。
去帮助中心,了解如何重新恢复服务
编程之路-界面美化
现在越来越多的软件都有了很Cool的2D造型,什么×××× XP啦,×××× 2002之类的,看来争夺软件霸权的地位,2D界面是必不可少的,有很多人认为Visual Basic语言的先天不足导致它不能够很灵活的改变界面,让俺们来看看究竟吧。
如果大家用过《Windows优化大师》,肯定会被它的界面所倾倒,其实利用ActiveSKIN 就可以办到,甚至更爽,但是如果要做的共享软件只是一个文件,在加上几个OCX累赘,似乎很
是不爽,看看VB是怎么利用别的东东来实现的吧。
首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,
Name: LblBTn,
BorderStyle: 1,
Appearance: 0,
Alignment: 2,
这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:
Private Const LBL_BACK_COLOR = &HE0E0E0 ’正常时Label控件的背景
Private Const LBL_WHEN_MOUSE_MOVE = &HC0C0C0 ’鼠标移动时Label的背景
Private Const LBL_WHEN_MOUSE_DOWN = &H808080 ’鼠标按下时Label的背景
再在Form的Load事件中输入以下内容
Private Sub Form_Load()
Dim Count As Integer
For Count = 0 To 3 ’请将此出的3换成你的LblBtn数量的个数-1
LblBtn(Count).BackColor=LBL_BACK_COLOR ’初始化LblBtn的背景
Next Count
End Sub
然后再在LblBtn的控件的使用MouseMove和MouseDown事件中来搞定剩余部分:
Private Sub LblBtn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ’当鼠标按在LblBtn上时
LblBtn(Index).BackColor = LBL_WHEN_MOUSE_DOWN ’临时改变LblBtn背景颜
End Sub
Private Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ’鼠标在LblBtn上面移动时触发该事件
Dim Count As Integer
DoEvents ’暂时将系统控制权教给系统
If Button Then Exit Sub ’如果按钮被按下就退出该过程
For Count = 0 To 3
If Count <> Index Then ’如果按下的不是其它按钮
LblBtn(Index).BackColor = LBL_BACK_COLOR ’将背景设为正常
Else
LblBtn(Index).BackColor = LBL_WHEN_MOUSE_MOVE ’将背景设为鼠标移动的背景
End If
Next Count
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Count As Integer
DoEvents
For Count=0 To 3
LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢复背景
Next Count
End
本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)
OK,Label控件就讲到这里,在来说说TextBox控件,
各位看关恐怕看惯了白颜的背景,那么就换换颜以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜是灰度,当然越接近白颜越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论