2

デバイスにファイルをインストールするアプリケーションを作成したいと考えています。しかし、進行状況を実装するのに問題があります。インストールするクラスを呼び出すためにフレームで使用するコードを以下に示します。execShellCmd は、すべてのデバイスにインストールするために呼び出されるメソッドです。value は、Install クラスによって与えられる静的な値です。インストールの進行状況を示すために、インストールと値に関連付けられたプログレスバーを実装したいと思います。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
     Thread t;  
        t = new Thread(){   
        private int postion;
     public void run(){  
        Install install = new Install();
        int position = 0;
        String fileName = directory;
        String shellCommand = fileName;

       // for (int position =0; postion < 105;position +5) {
                jProgressBar1.setValue(Install.value);
                try {
                        Thread.sleep(500);
                } catch (InterruptedException e) {
                }
                position += 5;
        //}
        install.execShellCmd(shellCommand);
        //jTextArea1.setText(error.err.toString());
        }

        };
        t.start();
    }
4

2 に答える 2

2

ここに示すように、 を使用ProcessBuilderしてスクリプトを実行できます。から取得した結合ストリームを解析してgetInputStream()、スクリプトの実際の進行状況を評価します。その情報を使用して、JProgresBar. GUI の活性を維持するには、 を呼び出すことができるのdoInBackground()メソッドでこれを行います。SwingWorkersetProgress()

于 2013-03-05T16:29:19.517 に答える
1

うーん..このスレッド アプローチは JProgressBar には適していないと言われています。代わりに、 で移動しTimerます。スレッド内で JProgressBar と連携しているときに、同じ問題が発生しました。詳細については、次のリンクを使用してください。実際の例もあります

http://www.coderanch.com/t/566728/GUI/java/JProgressBar-Napkin-feel-working

はい、次の私の答えを見てください

jProgressBar を更新する方法は何ですか?

于 2013-03-05T18:27:49.580 に答える