【问题标题】:Java Frame with Image and Progressbar带有图像和进度条的 Java 框架
【发布时间】:2016-08-29 10:45:32
【问题描述】:

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

谢谢。

【问题讨论】:

  • “但不知何故我无法添加进度条”。那么你有什么尝试添加进度条?我不认为这是不可能的问题。
  • 问题是,当我添加进度条然后执行它时,整个框架都是空的......
  • 那么图片和进度条不显示...

标签: java image frame


【解决方案1】:

您不能将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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多