Swing进度条

读条进度,直接从public static void main可以正常显示,但是actionPerformed触发则不行

Swing的JFrame为什么同样情况不刷新_哔哩哔哩_bilibilij

对比见p1

解决视频p2

解决办法

参考

https://www.cnblogs.com/qingxinblog/articles/3293303.html
https://blog.csdn.net/sujianxin2012/article/details/45921087

调用对象

调用stepper.init初始化并且开始线程

更新进度用InitLoadingGauge.setProgress(1,"初始化");

完结用vLoadingGaugeEnd

进度条类

package InitOnce;

import javax.swing.*;

import Menu.InitMenu;
import cqzg.voidMain;

import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
//界面https://www.cnblogs.com/qingxinblog/articles/3293303.html
//线程业务 https://blog.csdn.net/sujianxin2012/article/details/45921087
//very thanks to this two pages
public class InitLoadingGauge {
	public static InitLoadingGauge soloInstance=new InitLoadingGauge();
	public BarThread stepper = new BarThread(this);

	public static void setProgress(int pnGauge,String psPhrase)
	{
		soloInstance.stepper.setProgress(pnGauge,psPhrase);
		//Cannot call invokeAndWait from the event dispatcher thread
	}
	public static void vLoadingGaugeEnd() {soloInstance.vOnInitLoadingFinished();}
	int mnWidth=200,mnHeight=100;
	public void init(JFrame PParentJFrame)
	{
		voidMain.gameInstance.setVisible(false);
		
		this.mParentFrame=PParentJFrame;
		// Initialize
		//final JButton aJButton = new JButton("Start");
		
		stepper.progressBar.setStringPainted(true); // 显示百分比字符
		stepper.progressBar.setIndeterminate(false); // 不确定的进度条
		//aJButton.addActionListener(actionListener);
		//theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//Container contentPane = mpWaitPop.getRootPane();// getContentPane for JFrame
		mpWaitPop.setTitle("请等待");
		mpWaitPop.setLayout(new GridLayout(2,1));
		//mpWaitPop.setLayout(null);
		mpWaitPop.setLocationRelativeTo(null);
		//mpWaitPop.getContentPane().setLayout(null);
		mpWaitPop.setLocation((voidMain.jframex-mnWidth)/2,(voidMain.jframey-mnHeight)/2);
		//mpWaitPop.setSize(mnWidth, mnHeight);
		mpWaitPop.setPreferredSize(new Dimension(200,100));
		mpWaitPop.getContentPane().add(stepper.progressBar);
		stepper.mjlProcess.setText("初始化");
		//stepper.mjlProcess.setBounds(0,100,mnWidth,200);
		mpWaitPop.getContentPane().add(stepper.mjlProcess);
		//contentPane.add(aJButton);
		mpWaitPop.pack();
		
		mpWaitPop.validate();
		mpWaitPop.setVisible(true);
	}
	JFrame mpWaitPop = new JFrame();

	JFrame mParentFrame;
	public void vOnInitLoadingFinished()
	{
		//stepper.brunning=false;
		voidMain.gameInstance.add(voidMain.superPanel);
		voidMain.superPanel.add(voidMain.gamePanel);
		mpWaitPop.setVisible(false);
		mpWaitPop=null;
		stepper.brunning=false;
		stepper=null;
		voidMain.gameInstance.setVisible(true);
	}
	
	public class BarThread extends Thread
	{
		boolean brunning=true;
		public void run() {
			if (brunning==false)
				return;
			mmenu.history_start(mnStartYear);
			boolean brunning=false;
		}
		public InitLoadingGauge mRootClass;
		public int mnStartYear;
		public InitMenu mmenu;
		public BarThread(InitLoadingGauge cInitLoadingGauge) 
		{
			this.mRootClass=cInitLoadingGauge;
		}
		public void init(int pnStartYear,InitMenu pmenu)
		{
			this.mnStartYear=pnStartYear;
			this.mmenu=pmenu;
			this.start();
		}
	
		private int DELAY = 30000;
		public JProgressBar progressBar=new JProgressBar(0,100);
		public JLabel mjlProcess=new JLabel("");
		public void setProgress(int pnProgress,String psPhrase)
		{
			this.progressBar.setValue(pnProgress);
			this.mjlProcess.setText(psPhrase);
		}


	}//inner class ends here
		

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值