-2

必须有一些更有效的方法来设置图像不是吗?或者这是最好的吗?

     public Image setImage(String img){
        ImageIcon imageIcon = new ImageIcon(setURL("Images/" + img));
        Image image;
          image = imageIcon.getImage();
          //imgWidthTemp = image.getWidth(null);
          //imgHeightTemp = image.getHeight(null);
          return image; 
     }

    public URL setURL(String url){
       String Url = url;
       try{
        URL imgURL = getClass().getClassLoader().getResource(url);
        if(imgURL != null){
           return imgURL;
        }
       }catch(NullPointerException e){}
         return null;
     }

我真的不需要这个setURL()方法,它只是让事情变得更干净、更容易处理。我只想知道是否有更有效的方法来设置自定义图像。即使没有这两种方法,仍然需要编写很多代码。它变得更简单了吗?我的意思是为什么我们不能只制作一个新图像而不是先制作一个ImageIcon然后说Image myImage = ImageIcon.getImage()。没有抱怨,但是如果你有 2000 多个图像要设置,那将是很多没有一两个方法的代码(以我的世界为例吧?如果我自己这么说,那就是相当多的图像)。电子游戏大多只有大量图像,而不是代码有时只占代码的 30%。

4

1 回答 1

1

目前尚不清楚您在这里真正想要做什么,但 Java 教程中有一个关于处理图像的部分,其中包括加载图像的材料。阅读它以获取显示推荐方法的代码。

我不是这方面的专家,但我希望本教程推荐的直接方法比使用ImageIcon. (但我没有对它进行基准测试!!)


您的代码还有其他问题。特别是,这种setUrl方法很奇怪。

  • 这个名字setUrl是用词不当。该方法不是“设置”任何东西。相反,它试图将路径名映射到资源 URL。

  • try-catch 是不必要的。该代码中的任何内容都不应该抛出 NPE。

  • 如果您删除了不必要的 try-catch,那么逻辑归结为:

        URL imgURL = getClass().getClassLoader().getResource(url);
        if (imgURL != null) {
           return imgURL;
        } else {
           return null;
        }
    

    那是疯狂/愚蠢的东西!只需这样做:

        return getClass().getClassLoader().getResource(url);
    

最后,您需要了解有关实际优化的重要一点。

众所周知,人们对程序是快还是慢,以及是什么使它快或慢......的直觉很差。与其依靠你的直觉(即猜测问题是什么,或者将要出现什么问题),不如执行以下操作:

  1. 让你的程序工作。
  2. 衡量它执行实际任务的速度。这称为基准测试
  3. 问问自己它是否已经足够快了。如果是,那么不要浪费时间进行优化。
  4. 使用分析器找出代码中的性能热点瓶颈在哪里。
  5. 优化被识别为瓶颈的代码部分。不要花时间优化不是瓶颈的代码,因为这种努力会被浪费掉。
于 2013-11-24T03:25:26.027 回答