读条进度,直接从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
}