防盗门静音自动锁好吗:定义自己的Swing界面
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 18:56:07
定义自己的Swing界面
相信大家都有这样的感觉吧!在java中按钮上面的字体显示得很糟糕,让人看不清楚.还有就是弹出式对话框(JOptionPane)和JDialog上面的字也是一样,其实,这些东西在java中都是可以通过自定义界面样式来解决的,今天我就依我个人的一些经验说说怎么来定义自己的个性java界面!如果你看过sun公司的jdk帮助文档,你会发现在javax.swing这个包里面有很多类来定义组件的样式,特别是其中的UIManager和LookAndFeel这两个类为我们提供了非常方便的方法.
还是先看看UIDefaules这个类吧,你在平时编程序的时候,所有的组件的默认值就是由它来定义的,在java中,swing组件的界面常量都保存在其中,它其实是一个哈希表(Hashtable), 构造方法如下UIDefaults(Object<> keyValueList)
,当然还有一个参数为空的构造方法,你可以重载此方法来定义你的组件常量,比如:
Object<> uiDefaults = {
"Font", new Font("Dialog", Font.BOLD, 12),
"Color", Color.red
}
UIDefaults myDefaults = new UIDefaults(uiDefaults);
上面的例子就把组件的字体定义为:Dialog,黑体,大小为12,而颜色则是红色.
UIManager类
这个类有一个很有用的put(Object key, Object value)方法可以很有效的改变界面样式,比如说如果你要把一个JButton的前景色改为绿色,而把背景色该为黑色,你就可以这样写:
UIManager.put("Button.background",Color.black);
UIManager.put("Button.foreground",Color.green);
当然不仅可以改变组件的默认颜色,还可以改变所有在swing插入式界面中的常量(以后会在主页中罗列出,大约有将近600个),如:
改变滚动条的默认宽度:
UIManager.put("ScrollBar.width",new Integer(25));
改变按钮的默认大小:
UIManager.put("Button.preferredSize",new Dimension(30,30));
改变滚动条的默认颜色:
UIManager.put("ScrollBar.trackHighlight",Color.black);
改变JInternalFrame的图标:
UIManager.put("InternalFrame.icon",“*.ico“);
改变标签的边框:
UIManager.put("Label.border",BorderFatory.createEtchedBorder());
等等,不过这些语句必须出现在你定义组件以前.切记啊!
那也许会有人问我要在定义组件以后来改变其外观该怎么办呢?呵呵,别急,我们还有一个类没有呢,
LookAndFeel 类
LookAndFeel类有很多方法可以直接改变已经定义好的组件的界面样式,比如:
installBorder(JComponent c,String defaultBorderName)
installColors(JComponent c, String defaultBgName, String defaultFgName)
installColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName)installProperty JComponent c,String propertyName,Object propertyValue)等
下面举例说明各自的用法:
定义一个按钮的前景色和背景色:
JButton saveButton = new JButton(“保存“);
LookAndFeel.installColors(saveButton,"TextArea.background","Button.foreground");
定义一个标签的边框:
JLabel label = new JLabel(“gcyx-022@163.com“);
LookAndFeel.installBorder(label,BorderFatory.createLoweredBevelBorder());
如果你再仔细想一想.你还可以发现你可以用此方法来实现java中难以达到的问题,比如说在java中JLabel不支持多行显示文本,但在实际编程的时候又需要这样的功能,你该如何做呢?以下是我编的代码,看看是不是实现了呢?
JTextArea area = new JTextArea();
area.setFont(new Font(area.getFont().getFamily(),Font.PLAIN,18));
LookAndFeel.installColorsAndFont(area,"Label.background","Label.foreground","TextArea.font");
area.setForeground(Color.blue);
area.setBorder(BorderFactory.createTitledBorder("The Text"));
area.setLineWrap(true);
area.setWrapStyleWord(true);
其实原理就是伪装了一个JLabel(实际是一个JTextArea),只要把JLabel的前景色和背景色赋给JTextArea并且使其不可编辑,这样不就和一个JLabel一模一样了吗?呵呵!
附:
你也可以通过组件类所提供的set****()方法来改变外观,(***代表不同的名字)当然各自有各自的优点和不足
以上代码都是出自我自己的程序中,绝不是生搬硬套,而且代码经实验运行结果正确!
求一份java做的简易计算器的程序要求用awt或swing的界面
JAVA(swing)--界面交叠混乱
swing的现在分词
我想在java下用苹果的界面,是基于swing的需要什么包。那里有下载。
开发工作流定制软件时,用什么来开发用户自己定义的流程图的图形化界面
Swing的特点有哪些?
Swing.nEwage的领队是谁?
我想用swing做个界面,要求可以自由输入所要查询资料的关键字,麻烦哪位大虾帮忙改改这个程序。
java 的swing 与awt的关系
谁有java 的swing参考手册呀!
求教javax.swing相关的问题
javax.swing包的功能是什么?
java swing组件的优点有哪些?
java swing组件的特点有哪些?
怎样自己制作xp的登陆界面
如何加载自己定义的pgp文件?
java的方法可以自己定义吗?
CAD的坐标原点可不可以自己定义
界面函数和库函数的定义和区别是什么?二者是同一个概念吗?
swing曲风的歌曲,哪位大虾知道?
关于很久以前香港一个叫SWING的组合!
java 学习Swing eclipse有什么好的插件吗?
求JAVA swing中文电子书的下载地址谢谢!
求offspring 的come out swing...摇滚歌曲..跪求吖~!!!