Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 480|回复: 0

[Swing学习]等待提示框

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-31 23:55:36 | 显示全部楼层 |阅读模式
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class TestFrame extends JFrame{
       public JPanel testPanel = null;
       public JButton testButton = null;
       public JFrame testFrame = null;
       public TestFrame(){
          try
             {
               UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
          }catch (Exception ex) {
                System.out.println("Exception: " + ex);
          }
          testFrame = this;
          Dimension dimensions = Toolkit.getDefaultToolkit().getScreenSize();
          setSize(dimensions.width /2, dimensions.height /2);
          setLocation(dimensions.width/2-dimensions.width/4,dimensions.height/2-dimensions.height/4);
          testPanel= new JPanel();
          testButton= new JButton("开始线程");
          testPanel.add(testButton);
          getContentPane().add(testPanel);
          testButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                TestThread testThread = new TestThread();//新生成一个处理事务线程
                testThread.start();
                (new ThreadDiag(testFrame,testThread,"正在执行程序,请等待")).start();
            }
          });
          addWindowListener(new WindowAdapter(){
              public void windowClosing(WindowEvent e) {
               System.exit(0);
              }
           });
      }
        public static void main(String[] args) {
             TestFrame testFrame2 = new TestFrame();
             testFrame2.setTitle("线程等待测试");
              testFrame2.show();
        }
    }

    class TestThread extends Thread{
      public void run(){
             for (int i = 1; i < 100000 ; i++ ){
                    System.out.println(i);
             }
       }
    }

    class ThreadDiag extends Thread{
       private Thread currentThread = null;//实际调用时就是TestThread事务处理线程
       private String messages = "";//提示框的提示信息
       private JFrame parentFrame = null;//提示框的父窗体
       private JDialog clueDiag = null;// "线程正在运行"提示框
       private Dimension dimensions = Toolkit.getDefaultToolkit().getScreenSize();
       private int width = dimensions.width / 4, height = 60;
       private int left = 0, top = 0;
       public ThreadDiag(JFrame parentFrame, Thread currentThread, String messages){
         this.parentFrame = parentFrame;
         this.currentThread = currentThread;
         this.messages = messages;
         initDiag();//初始化提示框
        }

       protected void initDiag(){
         clueDiag = new JDialog(parentFrame,"正在执行,请等待...",false);
         clueDiag.setCursor(new Cursor(Cursor.WAIT_CURSOR));
         JPanel testPanel = new JPanel();
         JLabel testLabel = new JLabel(messages);
         clueDiag.getContentPane().add(testPanel);
         testPanel.add(testLabel);
         (new DisposeDiag()).start();//启动关闭提示框线程
       }
       public void run(){
        //显示提示框
        int left = (dimensions.width - width)/2;
        int top = (dimensions.height - height)/2;
        clueDiag.setSize(new Dimension(width,height));
        clueDiag.setLocation(left, top);
        clueDiag.show();
       }
       
      class DisposeDiag extends Thread{
        public void run(){
        try{
              currentThread.join();//等待事务处理线程结束
        }catch(InterruptedException e){
             System.out.println("Exception:" + e);
        }  
        clueDiag.dispose();//关闭提示框
       }
      }
    }  

      
      
       
       

         
       

         
       
      
      

    源码下载:http://file.javaxxz.com/2014/10/31/235536000.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 19:07 , Processed in 0.377536 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表