ThreadDiag.java
上传用户:tie2000000
上传日期:2022-07-03
资源大小:4k
文件大小:2k
源码类别:

进程与线程

开发平台:

Java

  1. package sendmsg;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. public class ThreadDiag implements Runnable
  5. {
  6. boolean stop=false;
  7. private Thread t=null;
  8. private dosend ds = null;//实际调用时就是TestThread事务处理线程 网管网bitsCN_com
  9. private String messages = "";//提示框的提示信息
  10. private JFrame parentFrame = null;//提示框的父窗体
  11. private JDialog clueDiag = null;// “线程正在运行”提示框
  12. private JTextArea ta=null;
  13. private Dimension dimensions = Toolkit.getDefaultToolkit().getScreenSize();
  14. private int width = dimensions.width / 4, height = 60;
  15. private int left = 0, top = 0;
  16. public ThreadDiag(JFrame parentFrame, dosend ds, String messages,Thread t,JTextArea z)
  17. {
  18. this.parentFrame = parentFrame;
  19. this.ds = ds;
  20. this.messages = messages;
  21. this.t=t;
  22. ta=z;
  23. initDiag();//初始化提示框
  24. }
  25. protected synchronized void initDiag()
  26. {
  27. clueDiag = new JDialog(parentFrame,t+"正在执行,请等待...",false);
  28. clueDiag.setCursor(new Cursor(Cursor.WAIT_CURSOR));
  29. JPanel testPanel = new JPanel();
  30. JTextArea testArea = new JTextArea(messages);
  31. testArea.setEditable(false);
  32. clueDiag.getContentPane().add(testPanel);
  33. testPanel.add(testArea);
  34. clueDiag.addWindowListener(new java.awt.event.WindowAdapter() {
  35. public synchronized void windowClosing(java.awt.event.WindowEvent e) {
  36. t.stop();                           //**********************此处若调用ds.quit()在等待过程中若开始新线程将无法正常终止
  37. //ta.setText("正在终止"+t+"请稍后");
  38. clueDiag.dispose();
  39. }
  40. });
  41. (new closediag(ds,ta,clueDiag,t)).start();//启动关闭提示框线程 
  42. }
  43. public synchronized void run(){
  44. //显示提示框
  45. int left = (dimensions.width - width)/2;
  46. int top = (dimensions.height - height)/2;
  47. clueDiag.setSize(new Dimension(width,height));
  48. clueDiag.setLocation(left, top);
  49. clueDiag.show();
  50. }
  51. }