-1

重複の可能性:
JDialog 親 JFrame の実行を停止します

私はJFrameが必要で、装飾がなく、プログレスバーの画像しかありません...しかし、サーバーにリクエストを送信したいときは、プログレスバーを表示したいのですが、代わりに表示されていませんが、ウィンドウがロードされています....jDialog を試しましたが、コードの実行が停止しています..

ここに私のコードがあります

private void LoginBtnActionPerformed(java.awt.event.ActionEvent evt) {
    ProgressBar pb = new ProgressBar();
    pb.setVisible(true);
    List<BasicNameValuePair> postPairs = new ArrayList<BasicNameValuePair>();
    AsyncService asyncService = new AsyncService();

    postPairs.add(new BasicNameValuePair("PATH","authenticateUser.idoc"));
        postPairs.add(new BasicNameValuePair("user_email",email));
        postPairs.add(new BasicNameValuePair("user_password",password));


        JSONArray jArray = asyncService.sendRequest(postPairs);
        pb.setVisible(true);
}

プログレス バー フレームには、gif アニメーション イメージとラベル以外は何もありません... EDIT 1 */

  class WorkerProgressBar extends SwingWorker<Integer, Integer>
  {
    private JFrame pb = new JFrame();
    JDialog dialog = new JDialog();
     JPanel panel = new JPanel();
     JLabel label = new JLabel();
     public WorkerProgressBar(){
             panel = new JPanel();
                panel.setBackground(new Color(114,114,114));
                JLabel imageLabel = new JLabel(new ImageIcon(getClass().getResource("/icons/progress_bar.gif")));
                imageLabel.setBorder(BorderFactory.createLineBorder(Color.black));
                panel.add(imageLabel);
                dialog.getContentPane().add(panel,BorderLayout.CENTER);

                dialog.pack();
                dialog.setLocationRelativeTo(null);
     }
     protected Integer doInBackground() throws Exception
 {
        dialog.setVisible(true);
        return 0;
     }
     protected void done()
{
    try
    {
        dialog.setVisible(false);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}   
4

1 に答える 1

4

ウィンドウが別の Swing トップ レベル ウィンドウの上にある場合は、JDialog を使用する必要がありますが、モーダル ダイアログを可視に設定する前に、実行するすべてのコードが呼び出されていることを確認する必要があります。ただし重要なのは、SwingWorker によって提供されるようなバックグラウンド スレッドで長時間実行されるタスクを実行する必要があるということです。あなたの質問はここで何度も尋ねられた質問であるため、このサイトには多くの例があります.

于 2012-12-31T12:07:59.097 に答える