Java 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();
	}
}

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

时间: 2024-10-21 18:59:02

Java Swing程序开发—右下角显示进度条的相关文章

疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程java任务timerstring 2009-01-16 21:12 6722人阅读 评论(0) 收藏 举报  分类: J2SE(63)  版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天讲了Swing基本的控件,今天开始讲特殊控件.一天讲2个吧,首先讲用JProgressBar,Pro

C#.NET中使用BackgroundWorker在模态对话框中显示进度条

这里是一个示例,其中展示了如何使用Backgroundworker对象在模态对话框中显示后台操作的实时进度条. 首先是主窗体代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;

基于Jquery插件Uploadify实现实时显示进度条上传图片

网址:http://www.jb51.net/article/83811.htm 这篇文章主要介绍了基于Jquery插件Uploadify实现实时显示进度条上传图片的相关资料,感兴趣的小伙伴们可以参考一下 先了解了解Uploadify,具体内容如下 Uploadify是一个简单易用的多文件上传方案.作为一个Jquery插件,Uploadify使用简单,并具有高度的定制性. Uploadify特性: Uploadify简单说来,是基于Jquery的一款文件上传插件.它的功能特色总结如下: 1).支

用Struts2实现文件上传时显示进度条功能

最近在做一个资源共享的项目中,采用了Struts2.1.8+Spring2.5.6+hibernate3.32的框架整合方式进行开发.在文件上传这块,因为需要实现文件上传时显示进度条的功能,所以尝试了一下.怕以后忘记,先贴出来分享下.   要在上传文件时能显示进度条,首先需要实时的获知web服务端接收了多少字节,以及文件总大小,这里我们在页面上使用AJAX技术每一秒向服务器发送一次请求来获得需要的实时上传信息.但是当我们使用struts2后怎么在服务端获得实时的上传大小呢?这里需要用到commo

VC下载文件 + 显示进度条

在codeproject里找了许久,发现这样一个VC下载文件并显示进度条的源码,于是添加了些中文注释: 1.下载线程函数: [cpp] view plain copy print? UINT DownloadFile(LPVOID pParam) { CWnd*           pwnd = AfxGetMainWnd(); CProgressCtrl*  m_Prog = (CProgressCtrl*)pwnd->GetDlgItem(IDC_PROGRESS1); CButton*  

android标题栏(titlebar)显示进度条

在后台线程中执行各种操作(网络连接.大数据存储)的时候,我们希望让客户能看到后台有操作在进行,那么既能有效的提示用户,又不占用当前操作空间,最好的方法就是在标题栏有个进度条. [代码] [Java]代码 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)

C#PDA智能程序图片动态变化进度条设计及实现

前言:SmartProject 项目是C#桌面程序的精简版,很多属性和事件可能都没有设置进SDK中.在最近的PDA程序中,我没用使用进度条.为了防止用户乱点,最开始想使用windows提供的进度条,但是觉得又不适合,所以就试图用图片切换的方式来实现.  原理:开启线程切换图片实现显示(子线程不影响主线程而继续往下执行). 1.进度界面设计效果 2.界面切换效果 点击质检按钮后跳转(during the new thread running the UI will be changed): 等待业

C# WinFrom 导入Excel文件,显示进度条

因为WINForm程序是在64位上运行如果使用另外一种快速的读取Excel的方法会报“未在本地计算机上注册“Microsoft.Jet.OLEDB.12.0”提供程序” 所以我就换了现在这种读取有点慢的方式 PS 采用上一种方式要更改成32位,由于我的系统有其他需求只有64位支持,所以不得不放弃,而且也需要客户端注册这个 Form1 控件 一个显示路径的TextBox: txt_ExcelPath 两个按钮 Button:btn_selectpath,btn_savedata 一个backgro

【CentOS】cp显示进度条

问题描述: 使用CentOS的cp时,对于大文件的拷贝或者mv,需要等待很长时间,现在需要显示cp或mv的进度 问题解决: Advanced copy 参考官网:http://beatex.org/web/advancedcopy.html 解决方法: 效果预览: [CentOS]cp显示进度条,码迷,mamicode.com