这是我用Jlayer制作一个圆形加载条的例子,但是现在图层在执行btnLoad.addActionListener()之后开始和停止,并在一段确定的计时器(4000)之后停止所以我的问题,我需要它单击按钮加载时启动 完成加载文件后停止!!!
final WaitLayerUI layerUI = new WaitLayerUI();
jlayer = new JLayer<JPanel>(this, layerUI);
final Timer stopper = new Timer(4000,new ActionListener() {
public void actionPerformed(ActionEvent ae) {
layerUI.stop();
}
});
stopper.setRepeats(false);
if (!stopper.isRunning()) {
stopper.start();
}
btnLoad.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
layerUI.start();
DataManager dataManager = new DataManager();
try {
dataManager.loadFromFile("C:/Users/*****PC/Downloads/****.csv");
} catch (Exception e) {
e.printStackTrace();
}
}
}
);
答案 0 :(得分:0)
您应该将文件加载到另一个Thread
而不是Event Dispatch Thread
。假设您的loadFromFile
方法在加载文件之前就会阻塞,然后您可以隐藏该图层,但您必须隐藏在Event Dispatch Thread
而不是您开始加载文件的新Thread
。< / p>
删除你的计时器并用以下代码替换你的try块:
try {
new Thread(new Runnable(){
public void run() {
dataManager.loadFromFile("C:/Users/*****PC/Downloads/****.csv");
EventQueue.invokeLater(new Runnable(){
public void run() {
layerUI.stop();
}
});
}
}).start();
} catch (Exception e) {
e.printStackTrace();
}