1

JDBC を使用してプログラムを MySQL にリンクしています。

MySQL への接続の確立には約 6 ~ 10 秒かかることに気付きました。JProgressBar を使用して接続の進行状況を表示し、プログラムがクラッシュしたとユーザーが考える必要がないようにしたいと考えています。

コードの前後に簡単なprint文を挿入してみました。接続作成後の print ステートメントは、6 ~ 10 秒後にのみ印刷されました。

接続間の進捗を取得したい。

完全なコーディングなどをお願いしているわけではありません。どうすれば達成できるか教えてください。

4

3 に答える 3

1

特定の時点での進行状況を正確に知ることができないため、不確定を表示できると思います(進行状況バーの使用方法をJProgressBar参照)。また、 EDTのブロックを回避して、バックグラウンドで接続を確立するために使用します。小さなコード スニペット:SwingWorker

 public static void main(String[] args) {
    JFrame frame = new JFrame("Test");
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setLayout(new FlowLayout());
    frame.setLocationRelativeTo(null);

    final JProgressBar jProgressBar = new JProgressBar();
    final JLabel status = new JLabel("Connecting...");
    frame.add(status);
    frame.add("jProgressBar", jProgressBar);

    frame.pack();
    frame.setVisible(true);

    SwingWorker sw = new SwingWorker() {
        @Override
        protected Object doInBackground() throws Exception {
            jProgressBar.setIndeterminate(true);
            Thread.sleep(6000); // Here you should establish connection
            return null;
        }

        @Override
        public void done(){
            jProgressBar.setIndeterminate(false);
            status.setText("Successful");
            jProgressBar.setValue(100); // 100%
        }
    };
     sw.execute();        
}

次のように表示されます。

ここに画像の説明を入力

于 2013-09-07T14:17:17.267 に答える
0

接続プーリングを使用します。アプリケーションの起動時に接続を取得し、そこで進行状況バーを使用します。
この部分では、たとえばフラグが true になるまで (つまり、接続が作成されたことを意味する) 「ブロック」することができ、より自然になるので、これを行うのは簡単なはずです。ユーザーが何かを行ったときに進行状況バーを表示する代わりに

于 2013-09-07T10:06:17.107 に答える