Java框架与图像和进度条

时间:2016-08-29 10:45:32

标签: java image frame

我想创建启动/加载屏幕,显示一个简单的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();
}

感谢。

1 个答案:

答案 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();