ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TC进度条

2021-11-17 12:03:07  阅读:163  来源: 互联网

标签:bar 进度条 TC ProgressBar bool new progressbar public


public class ProgressBarThread extends Thread{

	private ProgressBar bar;

	private String title;
/**
 * @param title
 * @param message
 */
	public ProgressBarThread(String title,String message) {
		this.title = title;
		bar = new ProgressBar(message);
	}

	public ProgressBarThread(String title, String message, Dialog dialog) {
		this.title = title;
		bar = new ProgressBar(message, dialog);
	}

	public void run() {
		bar.setTitle(title);
		bar.initUI();
	}

	public void stopBar() {
		bar.setBool(true);
	}
}
public class ProgressBar extends AbstractAIFDialog implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * @var ProgressBar.progressbar
	 * @brief JProgressBar
	 */
	private JProgressBar progressbar;

	/**
	 * @var ProgressBar.label
	 * @brief label used to tips
	 */
	private JLabel label;

	/**
	 * @var ProgressBar.timer
	 * @brief timer used to timing operation
	 */
	private Timer timer;

	/**
	 * @var ProgressBar.bool
	 * @brief bool used to flag thread return
	 */
	private boolean bool = false;

	/**
	 * @var Progressbar.registry
	 * @brief Registry
	 */
	// private Registry registry;

	/**
	 * @fn public ProgressBar()
	 * @brief constructor
	 * @param[in] null
	 */
	private String showLable = null;

	public ProgressBar(String showlable) {
		super(true);
		showLable = showlable;
	}

	public ProgressBar(String showlable, Dialog dialog) {
		super(dialog, true);
		showLable = showlable;
	}

	/**
	 * @fn public void setBool(boolean bool)
	 * @brief set bool value
	 * @param[in] bool
	 * @param[out] null
	 */
	public void setBool(boolean bool) {
		this.bool = bool;
	}

	/**
	 * @fn private void initUI()
	 * @brief createDialog method
	 * @param[in] null
	 * @param[out] null
	 */
	public void initUI() {
		Container container = getContentPane();
		JPanel mainPanel = new JPanel(new PropertyLayout());
		label = new JLabel(showLable, JLabel.CENTER);
		progressbar = new JProgressBar();
		progressbar.setOrientation(JProgressBar.HORIZONTAL);
		//progressbar.setBackground(new Color(100,149,237));
		progressbar.setBackground(new Color(0,0,255));

		progressbar.setMinimum(0);
		//progressbar.setMaximum(100);
		progressbar.setMaximum(100);
		progressbar.setValue(0);
		progressbar.setPreferredSize(new Dimension(500, 20));
		
		progressbar.setBorderPainted(true);
		timer = new Timer(100, (ActionListener) this);
		//flag为false时,timer只执行一次action。否则就会反复执行action
		timer.setRepeats(false);
		mainPanel.add("1.1.center", new JLabel(" "));
		mainPanel.add("2.1.center", label);
		mainPanel.add("3.1.center", progressbar);
		mainPanel.add("4.1.center", new JLabel(" "));
		container.add(mainPanel);
		pack();
		setLocationRelativeTo(null);
		TaskThread thread = new TaskThread(this); 
		thread.start();
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				bool = true;
			}
		});
		setVisible(true);
	}

	/**
	 * @class TaskThread
	 * @brief Create progressbar
	 * 
	 */
	class TaskThread extends Thread {
		private ProgressBar bar;

		public TaskThread(ProgressBar bar) {
			this.bar = bar;
		}

		@Override
		public void run() {
			if (bool == false) {
				// Set Status is running.
				// session.setStatus(registry.getString("export Running"));
			}
			for (int i = 0; i < i + 1; i++) {
				timer.start();
				int value = progressbar.getValue();
				if (value < 100) {
					value = value + 5;
					progressbar.setValue(value);
				} else {
					timer.stop();
					progressbar.setValue(0);
				}
				try {
					sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				if (bool == true) {
					bar.setVisible(false);
					bar.dispose();
					return;
				}
			}
		}
	}

	public void actionPerformed(ActionEvent arg0) {

	}
	
}

 

标签:bar,进度条,TC,ProgressBar,bool,new,progressbar,public
来源: https://blog.csdn.net/weixin_44942769/article/details/121374817

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有