Java 带图像和进度条的框架
Java Frame with Image and Progressbar
我想创建 splash/loading 屏幕,显示一个简单的 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();
}
谢谢。
您的 JFrame
没有使用 LayoutManager
。因此,仅使用整个 space 显示最后添加的组件。如果您在图像标签后添加 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();
我想创建 splash/loading 屏幕,显示一个简单的 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();
}
谢谢。
您的 JFrame
没有使用 LayoutManager
。因此,仅使用整个 space 显示最后添加的组件。如果您在图像标签后添加 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();