Java GlassPane进度条遮罩

 1 package com.swing.demo;
 2
 3 import java.awt.BorderLayout;
 4 import java.awt.Dimension;
 5 import java.awt.FlowLayout;
 6 import java.awt.Toolkit;
 7 import java.awt.event.MouseAdapter;
 8 import java.awt.event.MouseEvent;
 9
10 import javax.swing.ImageIcon;
11 import javax.swing.JButton;
12 import javax.swing.JFrame;
13 import javax.swing.JLabel;
14 import javax.swing.JPanel;
15
16 public class LoadingGlassPane extends JPanel {
17     private static final String ICON_PATH = System.getProperty("user.dir")
18             + "\\icos\\loading.gif";
19     private static final long serialVersionUID = 1L;
20
21     public LoadingGlassPane() {
22         setLayout(new BorderLayout());
23         setOpaque(false);
24         add(new JLabel(new ImageIcon(ICON_PATH)));
25         addMouseListener(new MouseAdapter() {
26             @Override
27             public void mousePressed(MouseEvent e) {
28                 super.mousePressed(e);
29             }
30         });
31     }
32
33     public static void main(String[] args) {
34         JFrame frame = new JFrame("GlassPane");
35         LoadingGlassPane glassPane = new LoadingGlassPane();
36         frame.setGlassPane(glassPane);
37         JButton button = new JButton("查询");
38         button.addMouseListener(new GlassMouseAdapter());
39         frame.getContentPane().setLayout(new FlowLayout());
40         frame.getContentPane().add(button);
41         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
42         // 窗体居中
43         Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
44         frame.setSize(400, 320);
45         frame.setLocation((d.width - frame.getSize().width) / 2,
46                 (d.height - frame.getSize().height) / 2);
47         frame.setVisible(true);
48     }
49 }
 1 package com.swing.demo;
 2
 3 import java.awt.Component;
 4 import java.awt.Container;
 5 import java.awt.event.MouseAdapter;
 6 import java.awt.event.MouseEvent;
 7
 8 import javax.swing.JButton;
 9 import javax.swing.JDialog;
10 import javax.swing.JFrame;
11
12 public class GlassMouseAdapter extends MouseAdapter {
13     @Override
14     public void mouseClicked(MouseEvent e) {
15         JButton button = (JButton) e.getSource();
16         Container container = (Container) button.getTopLevelAncestor();
17         System.out.println(container.getClass().getName());
18         Component glassPane = null;
19         if (container instanceof JFrame) {
20             glassPane = ((JFrame) container).getGlassPane();
21         } else if (container instanceof JDialog) {
22             glassPane = ((JDialog) container).getGlassPane();
23         }
24
25         doClick(button, glassPane);
26     }
27
28     private void doClick(JButton button, Component glassPane) {
29         if (null == glassPane) {
30             return;
31         }
32         new Thread() {
33             public void run() {
34                 button.setEnabled(false);
35                 glassPane.setVisible(true);
36                 try {
37                     Thread.sleep(2000);
38                 } catch (InterruptedException e) {
39                     e.printStackTrace();
40                 }
41                 glassPane.setVisible(false);
42                 button.setEnabled(true);
43             }
44         }.start();
45     }
46 }
时间: 2024-10-08 20:43:08

Java GlassPane进度条遮罩的相关文章

java实现进度条开发过程

首先说流程:     1.访问启动任务servlet    2.启动任务servlet开启任务,并跳转掉进度条展示页面    3.页面就绪就调用(进度参数获取servlet),此后进度条展示页面定时调用,直到传递过来为100%.    4.获取参数servlet从session中取出任务,并获取任务中的进度参数.返回进度参数给进度展示页面. 一下是各个文件代码,工程为web工程. 1.进度条schedule.css文件: body {     margin:0;     padding:0;  

2014年12月20日00:33:14-遮罩+进度条-extjs form.isvalid

1.Extjs : 遮罩+进度条 2.Extjs: extjs form.isvalid http://stackoverflow.com/questions/19354433/extjs-form-isvalid-is-false-but-how-to-know-why-the-form-is-invalid EXT API: http://docs.sencha.com/extjs/3.4.0/ http://dev.sencha.com/deploy/ext-3.x/docs/ http:

atitit. 文件上传带进度条 atiUP 设计 java c# php

atitit. 文件上传带进度条 atiUP 设计 java c# php 1. 设计要求 1 2. 原理and 架构 1 3. ui 2 4. spring mvc 2 5. springMVC.xml 3 6. struts extand url 3 7. behide code 3 8. 简化设计 3 1. 设计要求 带进度条 完成提示动画效果.. 2. 原理and 架构 如果需要显示进度条,实时显示文件上传进度 需要使用Ajaxj技术..up到个在的iframe黑头.. 工作原理 其实际

使用Java高速实现进度条

基于有人问到如何做进度条,以下给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax.swing.SwingWorker) 有人肯定会说,不是用线程做的吗?使用线程共享一个变量,确实能够.只是这样的方式不太优雅,当然,你能够再用线程封装也行.只是,SwingWorker已经帮我们封装好啦--使用现成的东西来做还是方便^_^ 先看效果: 以下看代码:非常easy,相信各位大大肯定是懂的

Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label用来分别显示进度和进度信息,而Dialog的宽度和高度正是闪屏图片的宽度和高度.然后将闪屏图片贴到Dialog中作为整个窗体的背景,Dialog显示时覆盖闪屏所处的区域.由于Dialog显示时闪屏并没有消失,且Dialog的X.Y及宽高都与闪屏图片一致,因此实际切换时,非常流畅,用户感觉不到有异常,

使用Java快速实现进度条(转)

基于有人问到怎样做进度条,下面给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax.swing.SwingWorker) 有人肯定会说,不是用线程做的吗?使用线程共享一个变量,确实可以.不过这种方式不太优雅,当然,你可以再用线程封装也行.不过,SwingWorker已经帮我们封装好啦--使用现成的东西来做还是方便^_^ 先看效果: 下面看代码:很简单,相信各位大大肯定是懂的- [j

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.Mouse

JAVA程序设计(17)----- 制作文件拷贝软件 进程 输入流输出流 NIO 进度条 底层拷贝 多线程

使用NIO对文件进行底层拷贝(按照字节)多线程技术初级应用 不阻塞程序运行 package com.lovo.homework01; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import

疯狂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