前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java Swing程序开发—右下角显示进度条

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

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-22 15:15:41
1.3K0
发布2019-01-22 15:15:41
举报

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

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

Java参考代码:

代码语言:javascript
复制
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();
	}
}

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年04月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档