繁体   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