一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java Swing組件實現進度監視功能示例

Java Swing組件實現進度監視功能示例

2021-04-02 16:09米格戰斗機 Java教程

這篇文章主要介紹了Java Swing組件實現進度監視功能,結合完整實例形式詳細分析了Java基于Swing組件實現進度條顯示功能的具體操作技巧與相關注意事項,需要的朋友可以參考下

本文實例講述了java swing組件實現進度監視功能。分享給大家供大家參考,具體如下:

實例一:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import javax.swing.progressmonitor;
import javax.swing.timer;
public class testprogressmonitor {
  timer timer;
  public void init() {
    final simulatedtargetmi target = new simulatedtargetmi(1000);
    // 以啟動一條線程的方式來執行一個耗時的任務
    final thread targetthread = new thread(target);
    targetthread.start();
    // 創建進度對話框
    final progressmonitor dialog = new progressmonitor(null,
        "等待任務完成,任務完成之前請不要關閉窗口,否則將取消當前操作...", "已完成:0.00%", 0,
        target.getamount());
    // 創建一個計時器
    timer = new timer(300, new actionlistener() {
      public void actionperformed(actionevent e) {
        // 以任務的當前完成量設置進度對話框的完成比例
        dialog.setprogress(target.getcurrent());
        dialog.setnote("已完成:" + target.getpercent());
        // 如果用戶單擊了進度對話框的”取消“按鈕
        if (dialog.iscanceled()) {
          // 停止計時器
          timer.stop();
          // 中斷任務的執行線程
          targetthread.interrupt();
          // 系統退出
          system.exit(0);
        }
      }
    });
    timer.start();
  }
  public static void main(string[] args) {
    new testprogressmonitor().init();
  }
}
// 模擬一個耗時的任務
class simulatedtargetmi implements runnable {
  // 任務的當前完成量
  private volatile int current;
  // 總任務量
  private int amount;
  public simulatedtargetmi(int amount) {
    current = 0;
    this.amount = amount;
  }
  public int getamount() {
    return amount;
  }
  public int getcurrent() {
    return current;
  }
  // run方法代表不斷完成任務的過程
  public void run() {
    while (current < amount) {
      try {
        thread.sleep(50);
      } catch (interruptedexception e) {
      }
      current++;
    }
  }
  public string getpercent() {
    return string.format("%.2f", 100.0 * current / amount) + "%";
  }
}

運行效果:

Java Swing組件實現進度監視功能示例

實例二:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.awt.flowlayout;
import java.awt.font;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.awt.event.windowadapter;
import java.awt.event.windowevent;
import javax.swing.box;
import javax.swing.boxlayout;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.jpanel;
import javax.swing.jprogressbar;
import javax.swing.timer;
 public class testjprogressbar {
  jframe frame = new jframe("m.ythuaji.com.cn - 當前進度指示...");
  // 創建一條垂直進度條
  jprogressbar bar = new jprogressbar(jprogressbar.horizontal);
  jlabel tiplabel = new jlabel("提示:", jlabel.left);
  jlabel contentlabel = new jlabel("任務完成之前請不要關閉窗口,否則將取消當前操作...", jlabel.left);
  jlabel statuslabel = new jlabel(" ", jlabel.center);
   public void init() {
    frame.setlayout(new flowlayout());
    frame.setresizable(false);
    tiplabel.setfont(new font("serif", font.plain, 14));
    contentlabel.setfont(new font("serif", font.plain, 14));
    statuslabel.setfont(new font("serif", font.plain, 14));
    jpanel panel = new jpanel();
    // fr5.setborder(new titledborder("boxlayout - y"));
    panel.setlayout(new boxlayout(panel, boxlayout.y_axis));
    panel.add(tiplabel);
    panel.add(box.createverticalstrut(2));
    panel.add(contentlabel);
    panel.add(box.createverticalstrut(7));
    panel.add(bar);
    // panel.add(box.createverticalglue());
    panel.add(box.createverticalstrut(2));
    panel.add(statuslabel);
    frame.add(panel, 0);
    final simulatedtarget target = new simulatedtarget(1000);
    // 以啟動一條線程的方式來執行一個耗時的任務
    final thread thread = new thread(target);
    thread.start();
    // 設置在進度條中繪制完成百分比
    bar.setstringpainted(true);
    // bar.setpreferredsize(new dimension(100, 18));
    // 設置進度條的最大值和最小值,
    bar.setminimum(0);
    // 以總任務量作為進度條的最大值
    bar.setmaximum(target.getamount());
    final timer timer = new timer(300, new actionlistener() {
      public void actionperformed(actionevent e) {
        // 以任務的當前完成量設置進度條的value
        bar.setvalue(target.getcurrent());
        if (target.getamount() <= target.getcurrent()) {
          statuslabel.settext("處理完成,oh yes!");
        }
      }
    });
    timer.start();
    frame.setlocationrelativeto(null);
    frame.setdefaultcloseoperation(jframe.dispose_on_close);
    // frame.setdefaultcloseoperation(jframe.exit_on_close);
    frame.addwindowlistener(new windowadapter() {
      @override
      public void windowclosing(windowevent e) {
        thread.interrupt();
        timer.stop();
        // 系統退出
        system.exit(0);
      }
    });
    // 該代碼依據放置的組件設定窗口的大小使之正好能容納你放置的所有組件
    frame.pack();
    frame.setvisible(true);
  }
   public static void main(string[] args) {
    new testjprogressbar().init();
  }
}
 // 模擬一個耗時的任務
class simulatedtarget implements runnable {
  // 任務的當前完成量
  private volatile int current;
  // 總任務量
  private int amount;
   public simulatedtarget(int amount) {
    current = 0;
    this.amount = amount;
  }
   public int getamount() {
    return amount;
  }
   public int getcurrent() {
    return current;
  }
   // run方法代表不斷完成任務的過程
  public void run() {
    while (current < amount) {
      try {
        thread.sleep(20);
      } catch (interruptedexception e) {
      }
      current++;
    }
  }
   public string getpercent() {
    return string.format("%.1f", 100.0 * current / amount) + "%";
  }
}

運行結果:

Java Swing組件實現進度監視功能示例

希望本文所述對大家java程序設計有所幫助。

原文鏈接:http://blog.csdn.net/qiuzhi__ke/article/details/49817453

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 俺去俺也在线www色官网 | 好大好硬视频 | 四虎影院精品 | 狠狠干奇米| 性一交一乱一伧老太 | 高跟丝袜hdvideossex | 四虎永久免费在线观看 | 午夜电影三级还珠格格 | 外国xxx | 亚洲精品久久7777777 | 亚洲乱码一二三四五六区 | 国产高清路线一路线二2022 | 亚洲国产精品线在线观看 | 性一交一无一伦一精一品 | 国产第9页 | 国产视频久久 | 国产精品毛片va一区二区三区 | 久久人妻少妇嫩草AV無碼 | 国产欧美一区二区精品性色 | 四虎国产精品免费入口 | 亚洲欧美国产另类视频 | 美女18隐私羞羞视频网站 | 久久久精品日本一区二区三区 | japanese在线看| 高清在线观看免费 | 日本护士撒尿xxxx18 | 日本中文字幕在线观看视频 | 国产精品边做边接电话在线观看 | chinese男同志同性twink | 国产精品麻豆 | 嫩模被黑人粗大挺进 | 99这里精品 | 精品久久久久久午夜 | 操美女 | 成人毛片高清视频观看 | 丫鬟粗大狠狠贯穿h | 日本免费精品视频 | 高h细节肉爽文办公室 | 扒开双腿猛进入爽爽视频ai | 99视频在线观看免费视频 | 免费永久观看美女视频网站网址 |