2016-10-11 12 views
0

私はテキスト領域にデータを貼り付けるツールを作成しました。このデータは、配列内の行ごとに分割されています(\ n)。 私のツールは完璧に機能しますが、アレイの進行状況をプログレスバーに接続するだけで、ユーザーは何が起こっているのかを知ることができます。 配列が10行ある場合、進捗バーは1から始まり、ツールが次の行に移動するときに10に達するまでカウントします。 これは、0の位置の配列で作業を開始すると、進行状況バーが1になり、配列が1の位置に移動したときにプログレスバーが2になることを意味します...JProgress Barを配列に接続して、ツールの進捗状況を表示

ここに私のコードの例:

// Run button (start the search) 
final JButton btn = new JButton("Run"); 
btn.addActionListener(new ActionListener() { 
    @SuppressWarnings("resource") 
    public void actionPerformed(ActionEvent e) { 
     try { 
      String getTextArea; 
      getTextArea = textArea.getText(); 
      // converting the input to an array 
      String[] arr = getTextArea.split("\\n"); 
      // clearing the text 
      textArea_1.setText(""); 
      //line = arr.length; 
      // looping for the input 
       // doing something..... 
      } 
      // end of for loop 
     } catch (Exception e2) { 
      JOptionPane.showMessageDialog(null, "Search was not completed due to bad connection, please try pressing run again or close the tool and reopen it"); 
     } 
    } 
}); 

// Creating the progress bar 
JProgressBar progressBar = new JProgressBar(); 
progressBar.setStringPainted(true); 
progressBar.setValue(0); 
for(int z = 0; z <= line; z++) { 
    progressBar.setValue(z); 
    z = z + 1; 
    progressBar.repaint(); 
} 
progressBar.setBounds(364, 11, 139, 22); 
contentPane.add(progressBar); 

は事前

答えて

1

にご協力いただきありがとうございますどのように私は行番号ではなく割合で表示されるのですかと私はあなたの質問を解釈してきましたか?

それが問題である場合は、例えばJProgressBarsetString(String s)方法と同様にsetValue(int n)

を使用する必要があります。

個人的に
// Set up of the JProgressBar 
final int MIN = 0; 
final int MAX = 100; 
JProgressBar progressBar = new JProgressBar(MIN, MAX); 
progressBar.setStringPainted(true); // show the text on the progress bar 
progressBar.setString("Loop no. " + MIN); // initial display 

// Code to update the JProgressBar 
for (int i=MIN; i<=MAX; i++) { 
    progressBar.setValue(i); 
    progressBar.setString("Loop no. " + i); 
} 

私が作業しているときBoundedRangeModelの実装を使用することを好みますプログレスバー付き。スイングはDefaultBoundedRangeModelを提供します。これはほとんどのタスクに適しています。

実行時に並行性を正しく使用することを忘れないでください。そうしないと、タスクが長い場合、インターフェイスは応答しなくなります。 SwingWorkerはこれを手助けできますhttps://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html

+0

はい、あなたは私の意見を持っています。私はあなたの提案を試み、あなたに多くをありがとう –

関連する問題