java - 将 JProgress Bar 连接到数组以显示工具的进度

标签 java arrays progress-bar

我创建了一个工具,可以将一些数据粘贴到文本区域中,并且这些数据在数组中按行 (\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);

感谢您提前提供的帮助

最佳答案

我将您的问题解释为如何显示行号而不是百分比?

如果这是问题所在,那么您需要使用 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 的实现。 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/

相关文章:

java - OGNL map 选择

java - Spring Boot多个@Configuration为同一个Bean添加属性

python - 在Python中反转二维数组

php - 按品牌显示包含产品信息的关联数组

javascript - 尝试使用 javascript 创建二维数组时,类型错误 : matrix[y]. Push 不是函数

asp.net-mvc-3 - .net MVC 3.0 带进度条的文件上传

Java从具有多列的文本文件中读取输入

java - Java 中的贝叶斯网络实现

html - Firefox:进度条值的样式?

linq-to-sql - 在评估 LINQ 查询时确定进度