进度条 Java 不更新
Progress bar Java doesn't update
我已经尝试了这里列出的大量教程和示例,但对我不起作用,我认为这是因为我使用的是 netbeans。
我试过了:
- Progress Bar Java
- http://www.java2s.com/Tutorial/Java/0240__Swing/SwingWorkerandProgressBar.htm
- Progress Bar 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() == "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();
}
我已经尝试了这里列出的大量教程和示例,但对我不起作用,我认为这是因为我使用的是 netbeans。
我试过了:
- Progress Bar Java
- http://www.java2s.com/Tutorial/Java/0240__Swing/SwingWorkerandProgressBar.htm
- Progress Bar 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() == "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();
}