我创建了一个工具,可以将一些数据粘贴到文本区域中,并且这些数据在数组中按行 (\n) 分割。 我的工具运行完美,我只需要将数组的进度连接到进度栏,以便用户可以知道发生了什么。 因此,如果数组有 10 行,进度条将从 1 开始计数,直到工具移动到下一行时达到 10 行。 所以我的意思是,当它开始处理位置 0 的数组时,进度条应显示 1,当数组移动到位置 1 时,进度条应显示 2 .......
这是我的代码示例:
// 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);
感谢您提前提供的帮助
最佳答案
我将您的问题解释为如何显示行号而不是百分比?
如果这是问题所在,那么您需要使用 JProgressBar
的 setString(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
的实现。 Swing 提供了 DefaultBoundedRangeModel
,它适用于大多数任务。
请记住在实现中正确使用并发,否则如果任务很长,您的界面将无法响应。 SwingWorker
可以帮助您解决此问题 https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html
关于java - 将 JProgress Bar 连接到数组以显示工具的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39976629/