【问题标题】:Using jWindow as splash screen which shows good but image doesn't paint ... just blank jWindow opened...any thoughts?使用 jWindow 作为启动画面,显示效果很好,但图像无法绘制……只是打开了空白的 jWindow……有什么想法吗?
【发布时间】:2020-08-04 22:49:09
【问题描述】:
  1. jWindow 打开了 2 秒,但图像没有绘制...有什么想法吗?
  2. 图像文件与类文件在同一文件夹中...
public class CreateSplashScreen extends JWindow {
    JWindow jw = new JWindow();
    Image scImage = Toolkit.getDefaultToolkit().getImage("testImage.png");
    ImageIcon imageIcon = new ImageIcon(scImage);
    public CreateSplashScreen() {
        try {
            jw.setSize(700, 500);
            jw.setLocationRelativeTo(null);
            jw.setVisible(true);
        } catch (Exception e) {
        }
    }

    public void paint(Graphics g) {
       super.paint(g);
       g.drawImage(scImage, 0, 0, jw);
    }

    public void CloseSplashScreen() {
        jw.setVisible(false);
    }
    
    public static void main(String[] args) {
        CreateSplashScreen sp = new CreateSplashScreen();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException ex) {
            Logger.getLogger(CreateSplashScreen.class.getName()).log(Level.SEVERE, null, ex);
        }
        sp.CloseSplashScreen();
    }
    
}
  1. jWindow 打开了 2 秒,但图像没有绘制...有什么想法吗?
  2. 图像文件与类文件在同一文件夹中...

【问题讨论】:

    标签: java jwindow


    【解决方案1】:

    当你的类CreateSplashScreen 已经扩展JWindow 时,为什么还要创建一个内部JWindow? 没有必要。你在弄乱你的程序。

    怎么做? 您实际上是通过jw.setVisible(true); 查看内部JWindow,但您在CreateSplashScreen 的`JWindow 中绘制图像。

    试试这个代码:

    public class CreateSplashScreen extends JWindow 
    {
        ImageIcon i = new ImageIcon(getClass().getResource("/createsplashscreen/testImage.png"));
        
        public CreateSplashScreen() {
         setSize(700, 500);
         setLocationRelativeTo(null);
         setVisible(true);
        }
    
        @Override
        public void paint(Graphics g) {
         super.paint(g);
         g.drawImage(i.getImage(), 0, 0, null);
        }
    
        public void CloseSplashScreen() {
         setVisible(false);
        }
        
        public static void main(String[] args) {
            CreateSplashScreen sp = new CreateSplashScreen();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException ex) {
                
            }
            sp.CloseSplashScreen();
        }    
    }
    

    注意:我不知道你从源文件夹中获取图片资源的方法。

    编辑:假设包含您的类CreateSplashScreen 的包的名称是createsplashscreen,请确保图像testImage.png 存在于您项目的createsplashscreen 包中。

    【讨论】:

    • 我需要从文件夹中获取图像的方法吗?
    • 对此一无所知......也许这就是它没有绘画的原因?如果可以的话,能给我一些提示吗?
    • @Hana 我需要从文件夹中获取图像的方法吗? - 我说我不知道​​你的方法。它可能会起作用。或者它可能不会。如果没有,请尝试阅读这篇文章stackoverflow.com/questions/6845231/…
    • @Hana 我已经更新了答案中的代码并且它可以工作。试试看。
    • @Hana 一个建议:请详细了解如何在项目文件夹中包含资源以及如何从包文件夹中获取这些资源。您可以从这里开始:stackoverflow.com/questions/22928116/…stackoverflow.com/questions/14819454/…
    【解决方案2】:

    @彼得 对于错误代码,我删除了我在 mamifest.mf 文件中添加的一行并构建了一个程序... 这一次,没有给我报错,奇怪…… 当我得到它时,我正在跟踪错误代码,它导致我进入应用程序生成代码的“CLASSPATH”部分......对不起,我不记得确切 非常感谢彼得的帮助。 祝你好运...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多