由于我的程序中有一个处理用的时间十分长,要十几秒,所以我想在处理前弹出一张写有“处理中,请等待”的图片,由于在程序一开始我有个启动界面,所以我认为只要用这个启动界面一样的方法就可以实现这个功能了,但是在运行中,图片总是显示不完全,字完全显示不出来,只显示底色,就像死住一样了,等到那个处理完了,图片也不显示完整,可能是什么问题呢?
这个是启动界面类:
public class Loading {
JWindow window; public Loading(int i) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
window = new JWindow();
Container c = window.getContentPane();
Icon icon;
if (i == 1) {
icon = new ImageIcon(java.awt.Toolkit.getDefaultToolkit().
getImage(getClass().getResource("/icon/picture1.png")));
} else if (i == 2){
icon = new ImageIcon(java.awt.Toolkit.getDefaultToolkit().
getImage(getClass().getResource("/icon/picture2.png")));
}
int width = icon.getIconWidth();
int height = icon.getIconHeight();
Dimension screenSize = toolkit.getScreenSize();
JLabel lbl = new JLabel(icon);
c.add(lbl);
window.pack();
window.setLocation(screenSize.width / 2 - width / 2,
screenSize.height / 2 - height / 2);
} public void show() {
window.setVisible(true);
} public void dispose() {
window.setVisible(false);
window.dispose();
}
}
在启动界面时候我是这样用的(效果完全正常):
Loading ld = new Loading(1);
ld.show();
inintial();//这个是初始化函数
ld.dispose();
在那个十几秒的处理时候我是这样用的(效果只显示图片picture2的底色,就像死住一样):
Loading ld = new Loading(2);
ld.show();
PileUp();//这个是那个处理
ld.dispose();
这个是启动界面类:
public class Loading {
JWindow window; public Loading(int i) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
window = new JWindow();
Container c = window.getContentPane();
Icon icon;
if (i == 1) {
icon = new ImageIcon(java.awt.Toolkit.getDefaultToolkit().
getImage(getClass().getResource("/icon/picture1.png")));
} else if (i == 2){
icon = new ImageIcon(java.awt.Toolkit.getDefaultToolkit().
getImage(getClass().getResource("/icon/picture2.png")));
}
int width = icon.getIconWidth();
int height = icon.getIconHeight();
Dimension screenSize = toolkit.getScreenSize();
JLabel lbl = new JLabel(icon);
c.add(lbl);
window.pack();
window.setLocation(screenSize.width / 2 - width / 2,
screenSize.height / 2 - height / 2);
} public void show() {
window.setVisible(true);
} public void dispose() {
window.setVisible(false);
window.dispose();
}
}
在启动界面时候我是这样用的(效果完全正常):
Loading ld = new Loading(1);
ld.show();
inintial();//这个是初始化函数
ld.dispose();
在那个十几秒的处理时候我是这样用的(效果只显示图片picture2的底色,就像死住一样):
Loading ld = new Loading(2);
ld.show();
PileUp();//这个是那个处理
ld.dispose();
public void run()
{
//输出图片
}
}private class jisuan extends Thread{
public void run()
{
//处理计算等
}
}调用的时候new jisuan().start();
new loading().start();这样应该可以