java progressbar如何实现动态效果

avatar
作者
猴君
阅读量:0

在Java中,要实现一个具有动态效果的进度条,可以使用Swing库中的JProgressBar组件。以下是一个简单的示例,展示了如何创建一个具有动态效果的进度条:

import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;  public class ProgressBarDemo {     public static void main(String[] args) {         SwingUtilities.invokeLater(() -> createAndShowGUI());     }      private static void createAndShowGUI() {         // 创建一个JFrame窗口         JFrame frame = new JFrame("ProgressBar Demo");         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         frame.setSize(300, 200);          // 创建一个JProgressBar组件         JProgressBar progressBar = new JProgressBar();         progressBar.setMinimum(0);         progressBar.setMaximum(100);         progressBar.setValue(0);         progressBar.setStringPainted(true);          // 创建一个JButton组件         JButton startButton = new JButton("Start");         startButton.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 // 当按钮被点击时,启动一个新的线程来更新进度条                 new Thread(() -> {                     for (int i = 0; i <= 100; i++) {                         final int progress = i;                         try {                             Thread.sleep(50); // 模拟耗时操作                         } catch (InterruptedException ex) {                             ex.printStackTrace();                         }                          // 在事件分发线程(EDT)中更新进度条                         SwingUtilities.invokeLater(() -> {                             progressBar.setValue(progress);                             if (progress == 100) {                                 JOptionPane.showMessageDialog(frame, "任务完成!");                             }                         });                     }                 }).start();             }         });          // 将进度条和按钮添加到窗口中         Container contentPane = frame.getContentPane();         contentPane.setLayout(new BorderLayout());         contentPane.add(progressBar, BorderLayout.CENTER);         contentPane.add(startButton, BorderLayout.SOUTH);          // 显示窗口         frame.setLocationRelativeTo(null);         frame.setVisible(true);     } } 

这个示例中,我们创建了一个包含JProgressBarJButton的简单窗口。当用户点击按钮时,会启动一个新线程来模拟耗时操作,并在每次迭代时更新进度条的值。为了确保进度条的更新在事件分发线程(EDT)中执行,我们使用SwingUtilities.invokeLater()方法。

运行此示例后,你将看到一个具有动态效果的进度条,当任务完成时,会弹出一个提示框。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!