进度条的使用

本文提供了一个Java应用程序示例,展示了如何使用Swing组件库创建一个带有进度条的界面。该程序通过按钮触发长时间操作,并在操作过程中显示一个进度条,每秒更新进度,直至完成。
每隔一秒钟,进度条的使用
java 代码
  1. package example;  
  2.   
  3. import java.awt.BorderLayout;  
  4. import java.awt.Color;  
  5. import java.awt.Container;  
  6. import java.awt.GridLayout;  
  7. import java.awt.event.ActionEvent;  
  8. import java.awt.event.ActionListener;  
  9. import java.awt.event.MouseAdapter;  
  10. import java.awt.event.MouseMotionAdapter;  
  11.   
  12. import javax.swing.ImageIcon;  
  13. import javax.swing.JButton;  
  14. import javax.swing.JFrame;  
  15. import javax.swing.JLabel;  
  16. import javax.swing.JOptionPane;  
  17. import javax.swing.JPanel;  
  18. import javax.swing.JProgressBar;  
  19. import javax.swing.Timer;  
  20.   
  21. public class GlassExample extends JFrame {  
  22.   JPanel glass = new JPanel(new GridLayout(01));  
  23.   JProgressBar waiter = new JProgressBar(0100);  
  24.   Timer timer;  
  25.   
  26.   public GlassExample( ) {  
  27.     super("GlassPane Demo");  
  28.     setSize(500300);  
  29.     setDefaultCloseOperation(EXIT_ON_CLOSE);  
  30.   
  31.     // Set up the glass pane with a little message and a progress bar.  
  32.     JPanel controlPane = new JPanel(new GridLayout(2,1));  
  33.     controlPane.setOpaque(false);  
  34.     controlPane.add(new JLabel("Please wait..."));  
  35.     controlPane.add(waiter);  
  36.     glass.setOpaque(false);  
  37.     glass.add(new JLabel( )); // Padding...  
  38.     glass.add(new JLabel( ));  
  39.     glass.add(controlPane);  
  40.     glass.add(new JLabel( ));  
  41.     glass.add(new JLabel( ));  
  42.     glass.addMouseListener(new MouseAdapter( ) {});  
  43.     glass.addMouseMotionListener(new MouseMotionAdapter( ) {});  
  44.     setGlassPane(glass);  
  45.   
  46.     // Now set up a few buttons and images for the main application.  
  47.     JPanel mainPane = new JPanel( );  
  48.     mainPane.setBackground(Color.white);  
  49.     JButton redB = new JButton("Red");  
  50.     JButton blueB = new JButton("Blue");  
  51.     JButton greenB = new JButton("Green");  
  52.     mainPane.add(redB);  
  53.     mainPane.add(greenB);  
  54.     mainPane.add(blueB);  
  55.     mainPane.add(new JLabel(new ImageIcon("oreilly.gif")));  
  56.   
  57.     // Attach the pop-up debugger to the main app buttons so you  
  58.     // see the effect of making a glass pane visible.  
  59.     PopupDebugger pd = new PopupDebugger(this);  
  60.     redB.addActionListener(pd);  
  61.     greenB.addActionListener(pd);  
  62.     blueB.addActionListener(pd);  
  63.   
  64.     // And last but not least, our button to launch the glass pane  
  65.     JButton startB = new JButton("Start the big operation!");  
  66.     startB.addActionListener(new ActionListener( ) {  
  67.         public void actionPerformed(java.awt.event.ActionEvent A) {  
  68.           glass.setVisible(true);  
  69.           startTimer( );  
  70.         }  
  71.       });  
  72.   
  73.     Container contentPane = getContentPane( );  
  74.     contentPane.add(mainPane, BorderLayout.CENTER);  
  75.     contentPane.add(startB, BorderLayout.SOUTH);  
  76.   }  
  77.   
  78.   // A quick method to start up a 10-second timer and update the progress bar  
  79.   public void startTimer( ) {  
  80.     if (timer == null) {  
  81.       timer = new Timer(1000new ActionListener( ) {  
  82.           int progress = 0;  
  83.           public void actionPerformed(ActionEvent A) {  
  84.             progress += 1;  
  85.             waiter.setValue(progress);  
  86.   
  87.             // Once we hit 100%, remove the glass pane and reset the progress bar  
  88.             // stuff.  
  89.             if (progress >= 100) {  
  90.               progress = 0;  
  91.               timer.stop( );  
  92.               glass.setVisible(false);  
  93.               waiter.setValue(0);  
  94.             }  
  95.           }  
  96.         });  
  97.     }  
  98.     if (timer.isRunning( )) {  
  99.       timer.stop( );  
  100.     }  
  101.     timer.start( );  
  102.   }  
  103.   
  104.   // A graphical debugger that pops up whenever a button is pressed  
  105.   public class PopupDebugger implements ActionListener {  
  106.     private JFrame parent;  
  107.     public PopupDebugger(JFrame f) {  
  108.       parent = f;  
  109.     }  
  110.     public void actionPerformed(ActionEvent ae) {  
  111.       JOptionPane.showMessageDialog(parent, ae.getActionCommand( ));  
  112.     }  
  113.   }  
  114.   
  115.   public static void main(String[] args) {  
  116.     GlassExample ge = new GlassExample( );  
  117.     ge.setVisible(true);  
  118.   }  
  119. }  
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值