繁体   English   中英

进度条Java不会更新

[英]Progress bar Java doesn't update

我已经尝试了许多此处列出的教程和示例,但是不适用于我,因为我使用的是netbeans,所以我认为这是可行的。

我试过了 :

让我展示我的代码。

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    vet = new int[Integer.valueOf(tamVet.getText())];
    ordenado = new int[Integer.valueOf(tamVet.getText())];
    metUtilizado = (String) CBMetodo.getSelectedItem();
    if (CBMetodo.getSelectedItem() == "Ordenado") {
        for (int i = 0; i < Integer.valueOf(tamVet.getText()); i++) {
            vet[i] = i;
        }
    } else if (CBMetodo.getSelectedItem() == "Reverso") {
        for (int i = 0; i < Integer.valueOf(tamVet.getText()); i++) {
            vet[i] = -i;
        }
    } else if (CBMetodo.getSelectedItem() == "Aleatório") {
        Random randomGenerator = new Random();
        for (int i = 0; i < Integer.valueOf(tamVet.getText()); i++) {
            vet[i] = randomGenerator.nextInt(Integer.valueOf(tamVet.getText()));
        }
    }
    vetList.clear();

    for (int i = 0; i < vet.length; i++) {
        vetList.add("[" + i + "] " + String.valueOf(vet[i]));
        PB.setValue(((i+1)*100)/vet.length); // i want update here
    }
} 

我是Java的新手,我想更新此值...有人可以帮助我解决这个问题吗?

第一:如果您尝试更新PB值并在同一线程中显示它,则可能会遇到一些问题(它只会在循环末尾显示内容)。

最好的方法是拆分一个线程来显示用户界面,另一个线程来更新保存进度条值的变量。

使用适当的Java比较,尝试一下。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    vet = new int[Integer.valueOf(tamVet.getText())];
    ordenado = new int[Integer.valueOf(tamVet.getText())];
    metUtilizado = (String) CBMetodo.getSelectedItem();
    if (CBMetodo.getSelectedItem().equals("Ordenado")) {
        for (int i = 0; i < Integer.valueOf(tamVet.getText()); i++) {
            vet[i] = i;
        }
    } else if (CBMetodo.getSelectedItem().equals("Reverso")) {
        for (int i = 0; i < Integer.valueOf(tamVet.getText()); i++) {
            vet[i] = -i;
        }
    } else if (CBMetodo.getSelectedItem().equals("Aleatório")) {
        Random randomGenerator = new Random();
        for (int i = 0; i < Integer.valueOf(tamVet.getText()); i++) {
            vet[i] = randomGenerator.nextInt(Integer.valueOf(tamVet.getText()));
        }
    }
    vetList.clear();
    new Thread()
    {
        public void run() {
            for (int i = 0; i < vet.length; i++) {
                int N_DIVISOES = vet.length/4;
                vetList.add("[" + i + "] " + String.valueOf(vet[i]));
                PB.setValue((i/N_DIVISOES) * N_DIVISOES); // i want update here
            }
        }
     }.start();
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM