gpt4 book ai didi

java - java中如何刷新进度条?

转载 作者:行者123 更新时间:2023-12-02 06:38:18 26 4
gpt4 key购买 nike

我尝试创建这个进度条:

public class ProgressBar extends JFrame{

private JButton fine = new JButton("Chiudi");
final JProgressBar jp;
JPanel body;
JLabel banner1;
JLabel banner2;
JPanel testo;
JTextArea areatesto;
JPanel provapannello;
JTextArea provatesto;
JPanel pannellofine;

public ProgressBar() {
super("loading");

setSize(440, 400);
setResizable(true);
Container content = getContentPane();
content.setBackground(Color.YELLOW);
body = new JPanel();
body.setLayout(new FlowLayout());
ImageIcon image1 = new ImageIcon("prova1.png");
banner1 = new JLabel();
banner2 = new JLabel();
banner1.setIcon(image1);
JTextArea prova = new JTextArea("bar", 2, 40);
prova.setBackground(Color.LIGHT_GRAY);
prova.setLineWrap(true);
body.add(banner1);
body.add(prova);
body.add(banner2);
banner.setBounds(30, 80, 120, 120);
testo = new JPanel();
areatesto = new JTextArea("Attendi Per Favore, Sto Preparando Il Tuo PDF", 2, 33);
areatesto.setLineWrap(true);
testo.add(areatesto);
ImagePanel progress_background = new ImagePanel("p.jpg");

UIManager.put("ProgressBar.background", new Color(29, 29, 29));
UIManager.put("ProgressBar.foreground", new Color(16, 95, 173));
UIManager.put("ProgressBar.selectionBackground", new Color(214, 214, 214));
UIManager.put("ProgressBar.selectionForeground", new Color(29, 29, 29));

jp = new JProgressBar();
jp.setUI(new BasicProgressBarUI());

jp.setBounds(0, 205, 434, 25);
jp.setMinimum(0);
jp.setMaximum(100);
jp.setStringPainted(true);
jp.setBorder(null);
progress_background.add(jp);
provapannello = new JPanel();
provatesto = new JTextArea("prova", 2, 70);


provatesto.setBackground(Color.LIGHT_GRAY);
provapannello.setBounds(0, 226, 500, 100);
provapannello.add(provatesto);

content.add(provapannello);
content.add(progress_background);

pannellofine = new JPanel();

pannellofine.add(fine);
pannellofine.setBounds(340, 330, 100, 100);
pannellofine.setVisible(false);

content.add(pannellofine);
content.add(testo);

content.add(body);
Thread runner;
jp.setValue(0);
setVisible(true);
public void setValue(final int j) {

Runnable target = new Runnable() {
@Override
public void run() {
jp.setValue(j);
}
};

SwingUtilities.invokeLater(target);

}
public static void main(String Args[]) {
ProgressBar p = new ProgressBar();


int i = 0;
while(true){
System.out.println("work");
try {
Thread.sleep(500);
} catch (InterruptedException ex) { }

p.setValue(i++);
}
}

我尝试使用“setValue”方法更改 ProgressBar 的值,但进度条没有增加,“while”循环到无穷大,但我看不到任何变化。怎么了?

最佳答案

我已经删除了大部分不必要的代码(并修复了您的编译错误),并且您的示例有效(我更改了延迟和增量,因为同样,出于复制目的,您不应该浪费人们的时间)

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;

public class ProgressBar extends JFrame {

private JProgressBar progressBar;

public ProgressBar() {
super("loading");
setSize(200, 100);
Container content = getContentPane();
content.setLayout(new BorderLayout());
progressBar = new JProgressBar();
progressBar.setMinimum(0);
progressBar.setMaximum(100);
progressBar.setStringPainted(true);
progressBar.setBorder(null);
content.add(progressBar, BorderLayout.SOUTH);
setVisible(true);
}

void updateProgress(final int newValue) {
progressBar.setValue(newValue);
}

public void setValue(final int j) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
updateProgress(j);
}
});
}

public static void main(final String Args[]) {
ProgressBar myProgressBar = new ProgressBar();
int i = 0;
while (i <= 100) {
System.out.println("" + i + "%");
myProgressBar.setValue(i);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
i = i + 5;
}
}
}

您确实应该投入时间来创建 SSCCE

另外,您应该遵循 this advice处理 InterruptedExcetion 时

关于java - java中如何刷新进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com