Java GlassPane进度条遮罩
package com.swing.demo; import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel; public class LoadingGlassPane extends JPanel {
private static final String ICON_PATH = System.getProperty("user.dir")
+ "\\icos\\loading.gif";
private static final long serialVersionUID = 1L; public LoadingGlassPane() {
setLayout(new BorderLayout());
setOpaque(false);
add(new JLabel(new ImageIcon(ICON_PATH)));
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
super.mousePressed(e);
}
});
} public static void main(String[] args) {
JFrame frame = new JFrame("GlassPane");
LoadingGlassPane glassPane = new LoadingGlassPane();
frame.setGlassPane(glassPane);
JButton button = new JButton("查询");
button.addMouseListener(new GlassMouseAdapter());
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 窗体居中
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(400, 320);
frame.setLocation((d.width - frame.getSize().width) / 2,
(d.height - frame.getSize().height) / 2);
frame.setVisible(true);
}
}
package com.swing.demo; import java.awt.Component;
import java.awt.Container;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame; public class GlassMouseAdapter extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
JButton button = (JButton) e.getSource();
Container container = (Container) button.getTopLevelAncestor();
System.out.println(container.getClass().getName());
Component glassPane = null;
if (container instanceof JFrame) {
glassPane = ((JFrame) container).getGlassPane();
} else if (container instanceof JDialog) {
glassPane = ((JDialog) container).getGlassPane();
} doClick(button, glassPane);
} private void doClick(JButton button, Component glassPane) {
if (null == glassPane) {
return;
}
new Thread() {
public void run() {
button.setEnabled(false);
glassPane.setVisible(true);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
glassPane.setVisible(false);
button.setEnabled(true);
}
}.start();
}
}
Java GlassPane进度条遮罩的更多相关文章
- java学习进度条四
- 2014年12月20日00:33:14-遮罩+进度条-extjs form.isvalid
1.Extjs : 遮罩+进度条 2.Extjs: extjs form.isvalid http://stackoverflow.com/questions/19354433/extjs-form- ...
- Android 使用ProgressBar实现进度条
ProgressBar简介ProgressBar是进度条组件,通常用于向用户展示某个耗时操作完成的进度,而不让用户感觉是程序失去了响应,从而更好地提升用户界面的友好型. 课程目标(1)制定Progre ...
- java进行文件上传,带进度条
网上看到别人发过的一个java上传的代码,自己写了个完整的,附带源码 项目环境:jkd7.tomcat7. jar包:commons-fileupload-1.2.1.jar.commons-io-1 ...
- js动画 无缝轮播 进度条 文字页面展示 div弹窗遮罩效果
1.无缝轮播 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.a ...
- 使用Java高速实现进度条
基于有人问到如何做进度条,以下给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax. ...
- 使用Java快速实现进度条(转)
基于有人问到怎样做进度条,下面给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax. ...
- Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...
- 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条
http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...
随机推荐
- PHP网页架站
目前,Windows下已经有集成的PHP网页架站工具,例如:AppServ.WampServer.这些软件将Apache.PHP.MySQL.phpMyAdmin集成到一起,极大地方便了开发者架站.但 ...
- 【bzoj】1717 [Usaco2006 Dec]Milk Patterns 产奶的模式
[算法]后缀数组 [题解]后缀数组 由于m太大,先离散化. 然后处理SA和LCP. 最后用单调队列处理即可. 注意实际上队列头尾长度限制是K-1. 删队尾不要删过头 i≥K才能开始统计答案. #inc ...
- 并查集入门--畅通工程(HDU1232)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 畅通工程 Time Limit: 4000/2000 MS (Java/Others) M ...
- LESS使用简介!
我真的真的极度痛苦. 原本用了那么久的LESS,一直都是用编译工具(考拉)进行编译的,今天试了试用less.js来搞,按官网的都一毛一样,然而!就是编译不出来! 我用来擦鼻涕的卫生纸都一下午用了大半卷 ...
- 【转】debian下的update-rc.d的使用
在Linux系统下,一个Services的启动.停止以及重启通常是通过/etc/init.d目录下的脚本来控制的.然而,在启动或改变运行级别时, 是在/etc/rcX.d中来搜索脚本.其中X是运行级别 ...
- python实战===爬取所有微信好友的信息
''' 爬取所有T信好友的信息 ''' import itchat from pandas import DataFrame itchat.login() friends=itchat.get_fri ...
- java 和 JVM
C++和Java的区别 指针:java中不存在指针的概念,编程者无法直接通过指针来直接访问内存,有利于维护java程序的安全 多重继承:C++支持多重继承,java不支持多重继承,但是允许一个类继承多 ...
- 解析jsp的 tomcat 、resin
一.tomcat 1. 安装JDK [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# wget http://www.lishi ...
- 百度笔试题:malloc/free与new/delete的区别(转)
百度笔试题:malloc/free与new/delete的区别 相同点:都可以申请动态内存和释放内存. 不同点: (1) 操作对象有所不同: malloc和free是C/C++的标准库函数,new和d ...
- IE11中实现颜色渐变
background: -ms-linear-gradient(left,#daa23e,#ad7f27); 下面是css3中颜色渐变对各个浏览器的写法:background: -webkit-lin ...