ITEEDU

swing的版面结构

版面管理器

事件处理

鼠标事件

键盘事件处理

窗口与面板的使用

JInternalFrame的使用(窗口与面板)

JTabbedPane,JScroolPane,JScrolBa的使用

标签与按钮的使用与介绍

[复选框、选项按钮、列表方框、下拉式列表的使用与介绍]

表格(Table)的使用与介绍

JTable的事件处理

1文字输入组件的使用与介绍

树(Tree)的使用与介绍

对话框(Option Pane与Dialog)的使用与介绍

菜单与工具栏的使用与介绍

文件选择对话框,颜色选择对话框,分隔线的使用与介绍.

Slider,Timer,Progress的使用

14-3:使用Progress Bar组件:

JProgressBar的类层次结构图:
  java.lang.Object
   --java.awt.Component
     --java.awt.Container
      --javax.swing.JComponent
       --javax.swing.JProgressBar

当你在安装一个新软件时,系统会告知你目前软件安装的进度如何?才不会让你觉得程序好像死了,同样的,若你设计的程序所 需要的运行超过2秒以上,你应该显示程序正在运行中的图标,或直接显示程序运行的进度,这样就能让用户清楚知道程序到底是死 了还是继续运行,在swing中,JProgressBar组件提供了类似这样的功能,它可以簋简单地输出进度的变化情况,让你想要提供进度 信息时,不再需要自行绘制绘图组件,只需要使用JProgressBar再加上几行程序设置就可以了。以下是JProgressBar的范例,在此 范例中,我们使用Timer组件当作控制进度杆移动的速度,当用户按下"start"按钮,则进度杆线就会开始向右移动,并显示出目前 的进度信息。每当JProgressBar的值改变一次(利用setValue()方法),就会触发一次ChangeEvent事件,如果你要处理这个事件, 你必须实作ChangeListener界面所定义的stateChanged()方法,在此我们是将JPogressBar的移动信息放在label上。

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;

public class ProgressBarDemo implements ActionListener, ChangeListener {
	JFrame f = null;
	JProgressBar progressbar;
	JLabel label;
	Timer timer;
	JButton b;

	public ProgressBarDemo() {
		f = new JFrame("progressbar Example");
		Container contentPane = f.getContentPane();

		label = new JLabel(" ", JLabel.CENTER);
		progressbar = new JProgressBar();
		progressbar.setOrientation(JProgressBar.HORIZONTAL);
		progressbar.setMinimum(0);
		progressbar.setMaximum(100);
		progressbar.setValue(0);
		progressbar.setStringPainted(true);
		progressbar.addChangeListener(this);
		progressbar.setPreferredSize(new Dimension(200, 30));
		progressbar.setBorderPainted(false);

		JPanel panel = new JPanel();
		b = new JButton("Start");
		b.addActionListener(this);
		panel.add(b);

		timer = new Timer(50, this);

		contentPane.add(panel, BorderLayout.NORTH);
		contentPane.add(progressbar, BorderLayout.CENTER);
		contentPane.add(label, BorderLayout.SOUTH);

		f.pack();
		f.setVisible(true);

		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public static void main(String[] args) {
		new ProgressBarDemo();
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == b) {
			timer.start();
		}

		if (e.getSource() == timer) {
			int value = progressbar.getValue();

			if (value < 100) {
				value++;
				progressbar.setValue(value);
			} else {
				timer.stop();
				progressbar.setValue(0);
			}
		}
	}

	public void stateChanged(ChangeEvent e1) {
		int value = progressbar.getValue();

		if (e1.getSource() == progressbar) {
			label.setText("目前已完成进度:" + Integer.toString(value) + " %");
		}
	}
}