练习84 第一时间
本例知识点
一句话讲解
新学知识
使用Container类
制作界面容器
使用Timer类
定时器
已学知识
使用Jlabele类
制作静态标签
使用JSlider类
制作滑杆
一、练习具体要求
本练习实现“第一时间”的动态显示。如图84-1所示,程序执行后,创建一个带有按钮和滑杆的面板,面板上动态显示“第一时间” 四个字,通过滑杆设置,可以改变小程序的装载时间和“第一时间”四个字滚动的速度。通过按钮可以控制动态文字的运动状态。
二、程序及注释
(1) 编程思路:首先,本练习因为要制作“第一时间”的动态显示,所以首先要生成程序界面:先通过语句Container container = null生成一个容器类对象container,然后分别通过语句JLabel label = null,JSlider slider1 = null和JSlider slider2 = null实例化标签类和滑杆类,最后通过语句container.add()将控件加载。然后,因为要实现按钮对动态文字的控制,所以首先通过语句String[] buttonLabels = {"开始", "停止", "重新启动"}创建按钮,然后通过一个for循环结构,将所有的按钮加载。最后,因为要实现人机交互,所以要添加事件响应,这是通过三个类来实现的,类TimerListener监听计时器事件的消息,类ButtonListener监听按钮事件的消息,类SliderListener监听滑杆事件的消息。
(2)程序实现及注释:(内含练习25中的People类的定义)
//TTimer.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.*;
public class TTimer extends JApplet {
Container container = null;
Timer timer = null;
JLabel label = null;
JSlider slider1 = null;
JSlider slider2 = null;
Color[] color = {Color.blue, Color.green, Color.red,
Color.yellow, Color.lightGray};
public void init() {
//得到小程序的容器面板句柄
container = this.getContentPane();
//创建静态标签
label = new JLabel("第一时间!", JLabel.CENTER);
label.setBackground(Color.black);
label.setFont(new Font("Dialog", Font.BOLD, 40));
label.setOpaque(true);
container.add(label);
//创建水平箱子
Box box = Box.createHorizontalBox();
container.add(box, BorderLayout.SOUTH);
//创建竖直箱子
Box vbox1 = Box.createVerticalBox();
box.add(vbox1);
//创建标签和滑杆
JLabel initDelay = new JLabel("程序启动时间:快----〉慢", JLabel.CENTER);
initDelay.setPreferredSize(new Dimension(200, 25));
vbox1.add(initDelay);
slider1 = new JSlider(JSlider.HORIZONTAL, 0, 60000, 0);
slider1.addChangeListener(new SliderListener());
vbox1.add(slider1);
JLabel delay = new JLabel("颜色变化时间:快----〉慢", JLabel.CENTER);
delay.setPreferredSize(new Dimension(200, 25));
vbox1.add(delay);
slider2 = new JSlider(JSlider.HORIZONTAL, 0, 2000, 1000);
slider2.addChangeListener(new SliderListener());
vbox1.add(slider2);
Box vbox2 = Box.createVerticalBox();
box.add(vbox2);
//创建另一个面板
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2,5,5));
vbox2.add(panel);
//创建按钮
String[] buttonLabels = {"开始", "停止", "重新启动"};
for (int i=0; i
TTimer