Java语言与JBuilder应用初步 第十四章布局与事件驱动

Download Report

Transcript Java语言与JBuilder应用初步 第十四章布局与事件驱动

Swing组件的其它特性

使用HTML控制字体格式
– Swing组件的标准字体显示功能只能满足简
单的格式要求
– 无法满足显示不同颜色、不同大小、不同字
体的文字的需要
– Swing提供了一种方法,可以利用HTML的
丰富的语法格式来控制字体格式
– HTML语法格式可以用在Swing的所有按钮、
单选框、复选框、文字标签等组件中
Swing组件的其它特性

使用HTML控制字体格式
– 为了使用HTML标记,只需在文本字符串的
首尾分别包括“<html>”和“</html>”即可:
JLabel label3 = new JLabel(
"<html><b><u>F</u>irst</b> line:<br><b><u>S</u>econd</b>
line:</html>");
– 显示的效果如下图所示:
Swing组件的其它特性

使用HTML控制字体格式
– 也可给按钮设置字体、颜色和下划线:
JButton b1 = new JButton("<html><center><b>禁止(<u>D</u>)</b><br>"
+ "<font color=#0000ff>中间按钮</font>");
JButton b3 = new JButton("<html><center><b>允许(<u>E</u>)</b><br>"
+ "<font color=#0000ff>中间按钮</font>");
– 在屏幕上显示的效果如下:
Swing组件的其它特性

组件的边框
– 每个JComponent对象以及通过JComponent继
承来的组件都可以有边框
– 边框的作用:


为组件画出线条边框或各种花样边框
可以在组件周围放置标题和空白区域
– 通过setBorder函数为Swing组件设置边框
– setBorder函数的参数为一个边框对象,这个
对象通过BorderFactory类来生成
Swing组件的其它特性

组件的边框
– 例:为面板设置单线条边框:
JPanel panel1 = new JPanel();
panel1.setBorder(BorderFactory.createLineBorder(Color.black));
JLabel label1 = new JLabel("line border");
panel1.add(label1);
– 这段程序显示出来的界面是这样的:
Swing组件的其它特性

工具提示
– 鼠标在设置了工具提示的组件上停留一秒钟
以后,界面上会自动浮现组件的功能简介
– 工具提示通过组件的setToolTipText函数来实
现,如下面的例子:
JButton b2 = new JButton("中间按钮");
b2.setFont(font);
b2.setForeground(new Color(0x0000ff));
b2.setToolTipText("这是中间的按钮");
Swing组件的其它特性

工具提示
– 执行这段代码,当鼠标在中间按钮上停顿1
秒钟以后,界面显示效果如下:
Swing组件的其它特性

拖放支持
– Java支持拖放与剪贴板技术
– 可以在同一程序的不同组件间、两个不同的
Java程序间、甚至在Java程序和其它程序之
间传递数据
– 对于拖放过程,Java通过TransferHandler对
象将数据传输给目标组件
– 对于剪贴板过程,同样通过TransferHandler
对象数据保存到剪贴板里,再将数据取出到
目标组件中
Swing组件的其它特性

绑定快捷键
– JComponent类和所有由它继承而来的组件都
支持快捷键绑定,步骤如下:
– 获得组件的InputMap对象,在该对象中设置
快捷键的信息
– 获得组件的ActionMap对象,在该对象中设
置快捷键所引发的动作事件
JButton myButton = new JButton("Button1");
myButton.getInputMap().put(KeyStroke.getKeyStroke("F2"),
"doSomething");
myButton.getActionMap().put("doSomething", btnAction);
Swing组件的其它特性

定时器组件
– 定时器是常用组件,它的作用是在预先设定
的一段时间以后,启动动作事件
– Java中有两个定时器组件:


Swing中的定时器组件
java.util中的Timer类
– 两个定时器类的功能差不多。在Swing图形
界面程序中,用定时器组件比较方便
– 这里只介绍Swing中的定时器组件
Swing组件的其它特性

定时器组件
– 创建定时器组件的代码:
Timer timer1 = new Timer(1000, new timer1_ActionListener());
timer1.setRepeats(true);
– 第一行:创建了一个定时器对象,它的构造
函数有两个参数


第一个参数代表定时器的延迟时间,单位以毫秒
计算,1000就代表1000毫秒,也就是1秒;
第二个参数是动作监听器对象,当定时器到达预
定时间以后,将会触发动作事件;
Swing组件的其它特性

定时器组件
– 定时器有两种用法:
 (1) 执行一次,随后便停止定时器;
 (2) 反复执行定时器;
– Timer.setRepeats()函数设置重复属性
– 调用start函数来启动定时器:
timer1.start();
– 调用stop函数来中止定时器:
timer1.stop();
Swing组件的其它特性

图标
– 图标就是一个具有Icon接口的对象
– 例:在按钮中添加图标:
ImageIcon icon1 = new ImageIcon("prev.gif", "向前");
ImageIcon icon2 = new ImageIcon("next.gif", "向后");
JButton btn1 = new JButton("向前", icon1);
JButton btn2 = new JButton("向后", icon2);
– 这段代码的显示效果如下图所示:
Swing组件的其它特性

键盘输入焦点
– 组件要接受键盘操作,必须得到键盘焦点
– 在窗口显示之前,可以调用
requestFocusInWindow函数来申请获得焦点,
如下面的代码所示:
. . . // 框架frame的各个成员已经设置完毕,包括按钮btn1
frame.pack(); // 排列窗口中的各组件位置
btn1.requestFocusInWindow(); // 按钮btn1申请获得焦点
frame.setVisible(true); // 显示窗口
Swing组件的其它特性

界面外观
– Java是跨平台系统,Java程序只需进行一次
编译之后,就可以在各个平台上使用
– Java程序在各个平台上所显示的界面可能有
很大差别
– Java可以设置程序的界面外观



可以按照操作系统特有的风格显示
也可以按照Java统一的风格显示
甚至可以设计自己的程序外观风格
Swing组件的其它特性

界面外观
– 界面风格通过UIManager.setLookAndFeel()函
数设置,常见的参数如下:
– UIManager.getCrossPlatformLookAndFeelClas
sName():跨平台的统一界面风格;
– UIManager.getSystemLookAndFeelClassName
():操作系统自己的界面风格。



在Windows平台下,显示Windows风格
在Mac OS平台下,显示Mac OS风格
Unix/Solaris/Linux平台,显示CDE/Motif风格
Swing组件的其它特性

界面外观
– "javax.swing.plaf.metal.MetalLookAndFeel":
一定要带有引号。显示Java界面风格。
– "com.sun.java.swing.plaf.windows.WindowsLo
okAndFeel":显示Windows界面风格。
– "com.sun.java.swing.plaf.motif.MotifLookAnd
Feel":显示CDE/Motif界面风格。
– "com.sun.java.swing.plaf.gtk.GTKLookAndFee
l":显示GTK+界面风格。
Swing组件的其它特性

界面外观
– 同一个程序在不同界面风格下的显示结果:
– Windows风格:
Swing组件的其它特性

界面外观
– Windows XP风格和Java标准风格:
Swing组件的其它特性

界面外观
– CDE/Motif风格和GTK+风格: