SwingWorker实现旋转等待提示的功能
来源:互联网 发布:淘宝的柠檬 编辑:程序博客网 时间:2024/06/09 18:53
最近在用swing写一个扫描电脑里文件的小程序时,由于扫描是一件很耗时的操作,所以每次在点击按钮后要等很久才能出结果,而中途有没有什么提示,显得很不友好,本想写一个进度条来显示,又觉得太麻烦,最后就写了一个旋转等待的dialog来进行友好提示“正在扫描中,请稍等…”,效果如下:
WaitUnit.java代码如下:
package com.scan.server.swing.unit;import java.awt.BorderLayout;/** * 旋转等待的dialog * @author ZYH * @time:2017年7月5日 */public class WaitUtil extends JDialog { private static final long serialVersionUID = 6987303361741568128L; private final JPanel contentPanel = new JPanel(); /** * Create the dialog. */ public WaitUtil() { setBounds(0, 0, 232, 94); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { JLabel lblLoading = new JLabel("扫描中,请稍后..."); lblLoading.setForeground(Color.DARK_GRAY); lblLoading.setOpaque(false); lblLoading.setIcon(Imgs.getImage("iwait.gif")); lblLoading.setFont(new Font("宋体", Font.PLAIN, 15)); lblLoading.setBounds(0, 0, 252, 94); contentPanel.add(lblLoading); } setModalityType(ModalityType.APPLICATION_MODAL); //置顶显示 setUndecorated(true); //禁用或启用此窗体的装饰(true:禁用;false:启用) setLocationRelativeTo(null); //设置窗口相对于指定组件的位置(null表示置于屏幕的中央) }}
然后在SwingWorker中调用代码:
package com.scan.server.test;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.SwingWorker;import javax.swing.border.EmptyBorder;import com.scan.server.swing.unit.WaitUtil;/** * 测试旋转等待提示框 * @author ZYH * @time:2017年7月5日 */public class TestWaitUnit extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { TestWaitUnit frame = new TestWaitUnit(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public TestWaitUnit() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); int windowWidth = this.getWidth(); //获得窗口宽 int windowHeight = this.getHeight(); //获得窗口高 Toolkit kit = Toolkit.getDefaultToolkit(); //定义工具包 Dimension screenSize = kit.getScreenSize(); //获取屏幕的尺寸 int screenWidth = screenSize.width; //获取屏幕的宽 int screenHeight = screenSize.height; //获取屏幕的高 setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口居中显示 JPanel panel = new JPanel(); contentPane.add(panel, BorderLayout.NORTH); JButton button = new JButton("\u6D4B\u8BD5\u65CB\u8F6C\u7B49\u5F85"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //旋转等待显示 final WaitUtil waitUtil = new WaitUtil(); SwingWorker<String, Void> sw = new SwingWorker<String, Void>() { StringBuffer sb = new StringBuffer(); @Override protected String doInBackground() throws Exception { //-------------模拟任务开始--------------- for(int i = 0; i < 100; i++){ sb.append("" + i); System.out.println(sb.toString()); Thread.sleep(50); } //--------------模拟任务结束-------------- return sb.toString(); } @Override protected void done() { //将耗时任务执行完得到的结果移至done来进行处理,处理完关闭旋转等待框 try { String result = get(); System.out.println(result); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // 关闭旋转等待框 if(waitUtil != null) { waitUtil.dispose(); } } }; sw.execute(); waitUtil.setVisible(true); //将旋转等待框WaitUnit设置为可见 } }); panel.add(button); }}
接下来是旋转图片以及java代码:
package com.scan.server.img;import java.awt.Toolkit;import javax.swing.ImageIcon;public class Imgs { public static ImageIcon getImage(String filename){ return new ImageIcon(Toolkit.getDefaultToolkit().getImage(Imgs.class.getResource(filename))); }}
阅读全文
0 0
- SwingWorker实现旋转等待提示的功能
- SwingWorker实现的简易图片浏览器
- 用SwingWorker实现程序的启动
- C中实现等待功能的语句
- Android 自动旋转提示对话框,可用于提示等待
- Android 自动旋转提示对话框,可用于提示等待
- jquery实现用户等待提示
- ajax提交等待服务器响应友好提示信息的实现
- [工具类]JS实现的页面等待提示层
- SwingWorker的使用
- SwingWorker代码的阅读
- SwingWorker的使用
- SwingWorker的使用
- SwingWorker的使用一
- Dev的等待提示框
- SwingWorker
- SwingWorker
- SwingWorker
- Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨
- type为number的input标签输入小数的方法
- JSON 、使用JSON实现数据交换 、jQuery对AJAX的支持
- xdebug 原理
- Html基础学习之标签和样式
- SwingWorker实现旋转等待提示的功能
- windows系统下配置caffe的matlab接口所遇到的问题
- java学习(1)
- ubuntu16.04下安装samba
- Java注解
- 自定义注解API
- EEPROM
- 懒加载图片适应大小
- ViewPager禁止滑动