我想创建启动/加载屏幕,显示一个简单的jpg图像,并在此图像下显示一个活动的进度条。
但我找不到编码的解决方案。
所以这是我到目前为止对于图像的代码,它工作得很完美,但不知怎的,我无法添加进度条。
请帮我一个代码示例。
static void loadingScreen() {
JFrame frame = new JFrame();
frame.setSize(450, 450);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.add(new JLabel(new ImageIcon("C://Users//Alex//Desktop//Image.jpg")));
frame.setTitle("Loading...");
frame.setVisible(true);
try {
Thread.sleep(3000);
} catch (Exception e) {
//exception
}
frame.dispose();
}
感谢。
答案 0 :(得分:0)
您不能在LayoutManager
上使用JFrame
。因此,只使用整个空间显示最后添加的组件。如果您在图片标签后添加JProgressBar
,则只能看到空JProgressBar
。
您肯定需要学习如何使用LayoutManager
。现在,我建议您BorderLayout
以图片为中心,将进度条显示在底部。
您的代码的另一个问题是Thread.sleep()
语句。切勿将GUI线程发送到睡眠状态。使用另一个将进行加载的线程。
这是一些适合您的样本代码。
JFrame frame = new JFrame();
JProgressBar progressbar = new JProgressBar(0, 100);
frame.setSize(450, 450);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.add(new JLabel(new ImageIcon("C://Users//Alex//Desktop//Image.jpg")), BorderLayout.CENTER);
frame.add(progressbar, BorderLayout.SOUTH);
frame.setTitle("Loading...");
frame.setVisible(true);
Thread loadingThread = new Thread(new Runnable(){
@Override
public void run() {
for(int i = 0; i < 100; i++){
try {
Thread.sleep(100);
} catch (Exception e) {
//exception
}
progressbar.setValue(i);
}
frame.dispose();
}
});
loadingThread.start();