gpt4 book ai didi

java - Swing JProgressBar 用于显示方法中花费的时间

转载 作者:行者123 更新时间:2023-11-30 04:20:52 25 4
gpt4 key购买 nike

我有一种将数据集导入数据库的方法,我希望有一个进度栏来通知用户单击按钮后正在发生导入。我已经编写了一个在硬编码持续时间内工作的进度条,但我显然希望它根据导入的持续时间是动态的。我尝试了很多不同的方法都没有成功,所以我希望有一些帮助! :)谢谢!编辑:这是导入按钮的操作监听器 ->

        btnImportADataset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
progressBar(10);
SystemAdminHome.testMethod();`enter code here`
ExcelReadInReadOut.writeToDB();
}
});

以下是在 Action 监听器中调用的方法 ->

    private final static int interval = 1000;
private static int i;
private static JLabel label;
private static JProgressBar progBar;
private static Timer timer;

public static void progressBar(final long duration) {
JFrame frame = new JFrame("Progress Bar");
ProgressBar progBarInstance = new ProgressBar();

progBar = new JProgressBar(0, (int) duration);
progBar.setValue(0);
progBar.setStringPainted(true);

label = new JLabel("Import a dataset");

JPanel panel = new JPanel();
//panel.add(btnStart);
panel.add(progBar);

JPanel panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
panel1.add(panel, BorderLayout.NORTH);
panel1.add(label, BorderLayout.CENTER);
panel1.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
frame.setContentPane(panel1);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Create a timer.
timer = new Timer(interval, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (i == duration) {
timer.stop();
btnImportADataset.setEnabled(true);
progBar.setValue(0);
String str = "<html>" + "<font color=\"#FF0000\">" + "<b>"
+ "Import completed." + "</b>" + "</font>"
+ "</html>";
label.setText(str);
}
i = i + 1;
progBar.setValue(i);
}
});


}

public static void testMethod() {
btnImportADataset.setEnabled(false);
i = 0;
String str = "<html>" + "<font color=\"#008000\">" + "<b>"
+ "Import is in process......." + "</b>" + "</font>"
+ "</html>";label.setText(str);timer.start();
}

最佳答案

参见https://stackoverflow.com/a/10774277/66207使用 SwingWorker 的 doInBackground 方法来执行繁重的负载,并使用publish 方法来发布进度。

[编辑]链接到正确答案而不是问题。

关于java - Swing JProgressBar 用于显示方法中花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17094646/

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