码迷,mamicode.com
首页 > 编程语言 > 详细

Java Swing程序开发—右下角显示进度条

时间:2015-04-15 21:34:27      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:swing   进度条   

虽然自己不喜欢Java的GUI程序,但是工作原因,听从上级安排。

转入正题:这篇文章实现在桌面右下角显示一个进度条,显示当前程序运行的进度。而且鼠标能够拖动进度条。有需要的童鞋,可以直接拷贝代码过去使用!

Java参考代码:

import java.awt.Dimension;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JDialog;
import javax.swing.JProgressBar;
import javax.swing.SwingConstants;

public class ProgressDialog extends JDialog implements MouseListener,
		MouseMotionListener {
	private static final long serialVersionUID = 1L;

	private JProgressBar progressBar;

	private int height = 20;//进度条高度
	private int width = 260;//进度条宽度

	private int mouseX;//鼠标X坐标
	private int mouseY;//鼠标Y坐标

	private int currentX;//进度条当前X坐标
	private int currentY;//进度条当前Y坐标

	private boolean isMove = false;

	public ProgressDialog(int number) {
		initialize();
		initProgressBar(number);
		this.add(progressBar);
	}

	/**
	 * 初始化窗体
	 */
	private void initialize() {
		Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();//屏幕尺寸
		Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(
				this.getGraphicsConfiguration());
		currentX = (int) (dimension.getWidth() - width - 3);
		currentY = (int) (dimension.getHeight() - screenInsets.bottom - height - 3);
		this.setAlwaysOnTop(true);
		this.setSize(width, height);
		this.setLocation(currentX, currentY);
		this.setUndecorated(true);
	}
	
	/**
	 * @param number进度条最大值
	 * 初始化进度条
	 */
	private void initProgressBar(int number) {
		progressBar = new JProgressBar(SwingConstants.HORIZONTAL);
		progressBar.setMinimum(0);
		progressBar.setMaximum(number);
		progressBar.setStringPainted(true);//显示进度条数值
		progressBar.addMouseMotionListener(this);
		progressBar.addMouseListener(this);
	}

	public JProgressBar getProgressBar() {
		return progressBar;
	}

	@Override
	public void mouseDragged(MouseEvent e) {
		if (isMove) {
			//鼠标拖动处理
			int dx = e.getXOnScreen() - mouseX;
			int dy = e.getYOnScreen() - mouseY;
			this.setLocation(currentX + dx, currentY + dy);
		}
	}

	@Override
	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mousePressed(MouseEvent e) {
		isMove = true;
		//记住拖动起始的坐标
		mouseX = e.getXOnScreen();
		mouseY = e.getYOnScreen();
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub

	}
	
	public static void main(String[] args) {
		int max = 20;
		ProgressDialog dlgMain = new ProgressDialog(max);
		dlgMain.setVisible(true);
		JProgressBar progressBar = dlgMain.getProgressBar();
		for (int i = 0; i < max; i++) {
			progressBar.setValue(i + 1);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		dlgMain.dispose();
	}
}

效果图(注意看右下角):

技术分享

Java Swing程序开发—右下角显示进度条

标签:swing   进度条   

原文地址:http://blog.csdn.net/theonegis/article/details/45063999

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!