簡體   English   中英

如何使用JProgressBar顯示我的應用程序延遲?

[英]How show my application delay with JProgressBar?

我寫了一個簡單的應用程序,我想用JProgressBar Plese顯示它的延遲;

我想用Joptionpane顯示JProgressBar,並帶有一個取消按鈕,它應該是模態的

這是我的源代碼:

class CustomFrame extends JFrame {

  private JProgressBar progressBar;

  public CustomFrame() {
    long start = System.currentTimeMillis();
    myMethod();
    this.getContentPane().setLayout(null);
    this.setSize(200, 200);

    //JOptionPane. ?????

    this.setTitle("JFrame");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
       long end = System.currentTimeMillis();
        System.out.print("\nTime: " + (end - start));
  }
    public void myMethod(){
        try {
                     java.io.File file = new java.io.File("i://m.txt");
                     BufferedReader input =
                       new BufferedReader(new FileReader(file));
                     String line;
                     while ((line = input.readLine()) != null) {
                         if (line.indexOf("CREATE KGCGI=") != -1 ){
                             System.out.println(line);
                         }
                     }
                     input.close();
                   }
                   catch(Exception e){
                       e.printStackTrace();
                   }
    } 

謝謝 ...

要使它正常工作,您需要做幾件事:

  1. 您應該注意Swing中的線程問題。 GUI繪制應在EventDispatchThread上完成,而磁盤I / O應在輔助線程中完成。 有關更多詳細信息,請參見本教程SwingWorker JavaDocSwingUtilities.invokeLater
  2. 然后,您將需要獲取文件的大小( file.length() ),以確定如何調整進度條的范圍( myProgressBar.setMaximum(length)
  3. 遍歷文件中的各myProgressBar.setValue(myProgressBar.getValue()+lineLength) ,將需要觸發對進度條的更新( myProgressBar.setValue(myProgressBar.getValue()+lineLength) )。

批評的幾點:

  • 您的構造函數不應執行所有工作(即加載文件並彈出具有取消功能的選項窗格。構造函數應僅執行創建對象所需的工作。您可能要考慮讓您的構造函數創建您的類,然后將需要完成的工作分別調用,或者在類似init()方法的調用中進行。
  • 不清楚您將JFrame作為超類正在做什么。 JOptionPane是一個類,它將彈出一個非常基本的模態對話框,其中包含一些文本,可能是圖標或輸入字段。 它不是嵌入在對話框中的面板。
  • 由於JOptionPane是用於創建基本消息對話框的非常基本的構造,因此使用JDialog (也可以使其成為模式)可能會更容易。 JDialog允許您JDialog添加按鈕,而作為獨立JOptionPane則要求您使用“是/否”或“是/否/取消”或“確定/取消”等。
  • 如果仍要使用JOptionPane ,並且僅顯示取消按鈕,則可以實例化JOptionPane (與使用實用程序show*方法相對),並使用進度條作為message ,並將JOptionPane.CANCEL_OPTION用作optionType參數。 您仍然需要將其放入JDialog以使其可見。 有關更多詳細信息,請參見本教程

JOptionPane(構造函數)

使用指定的按鈕,圖標,消息,標題等創建JOptionPane。 然后,您必須將選項窗格添加到JDialog,在選項窗格上注冊屬性更改偵聽器,然后顯示對話框。 有關詳細信息,請參見停止自動關閉對話框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM