zoukankan      html  css  js  c++  java
  • 一个ButtonDemo序(遇到的问题,以及在大牛的帮助下,如何解决的。)

    问题1:

    1 public ButtonDemo(){
    2         //ImageIcon leftButtonIcon=new ImageIcon("images/a.png");
    3         ImageIcon leftButtonIcon=createImageIcon("images/a.png");
    4         ImageIcon middleButtonIcon=createImageIcon("images/middle.png");
    5         ImageIcon rightButtonIcon=createImageIcon("images/right.gif");
    6         

          首先清楚程序的基本结构。上面的ButtonDemo()到现在,我刚发现原来是主类的构造函数。在主类里面初始化了很多实例变量。
          路径的寻址问题:

          TT开始以为createButtonIcon是ImageIcon类中自带的方法,结果搜了八年没有搜到。后来在程序的后面发现了这个方法,原来是作者自己定义的。原来这样也可以啊。稍稍感觉大脑转的有点慢啊。

    1 protected static ImageIcon createImageIcon(String path){
    2         java.net.URL imgURL=ButtonDemo.class.getResource(path);
    3         if(imgURL !=null){
    4             return new ImageIcon(imgURL);
    5         }else{
    6             System.out.println("Couldn't find file:"+path);
    7             return null;
    8         }
    9     }

    尤其是红字的部分,有点坑啊,压根看不懂红色的部分是什么意思。在此,笔者打算去百度上搜一搜。哈哈,动一动手指头,结果一搜就搜到答案了。答案如下:

    1 就是java.net.URL类 声明一个它的对象imgURL  而这个对象是指向ButtonDemo.class.getResource(path) 也就是imgURL  的值就是ButtonDemo.class.getResource(path)

    我仔细想了想,这个形式其实还是一般的定义对象的形式。只是java.net.URL容易把人唬住了。我想作者之所以把原程序这样写,是为了方便理解,如果仅仅是写URL可能会让大家一头雾水。

    1 java.lang.Class.getResource()这主要是做什么用的?

    答:ButtonDemo.class.getResource(path);可能代表的是class在这里,其实也是一个类名称。

    java.lang.class.getResource()。

     1 getResource
     2 public URL getResource(String name)查找带有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的 class loader 实现的。此方法委托给此对象的类加载器。
    如果此对象通过引导类加载器加载,则此方法将委托给 ClassLoader.getSystemResource(java.lang.String)。
    3 在委托前,使用下面的算法从给定的资源名构造一个绝对资源名: 4 5 如果 name 以 '/' ('u002f') 开始,则绝对资源名是 '/' 后面的 name 的一部分。 6 否则,绝对名具有以下形式: 7 modified_package_name/name 8 其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.' ('u002e')。 这就是我需要的,唉呀妈呀,太浪费时间了。不好不好。 9 10 11 参数: 12 name - 所需资源的名称 13 返回: 14 一个 URL 对象;如果找不到带有该名称的资源,则返回 null 15 从以下版本开始: 16 JDK1.1

     TT的回答:

    1 在这个问题中:
    2 工程包所在的地址是下面这个地址:
    3 D:Program FilesEclipseworkspaceFirst_GUI
    4 所以程序中直接写的是相对地址。陈l同学说一般都写相对地址,因为程序移植的时候,就不用再更改绝对地址了。
    5 //ImageIcon leftButtonIcon=new ImageIcon("images/a.png");
    6         ImageIcon leftButtonIcon=createImageIcon("images/a.png");
    7         ImageIcon middleButtonIcon=createImageIcon("images/middle.png");
    8         ImageIcon rightButtonIcon=createImageIcon("images/right.gif");

    问题2:不用重新创建createImageIcon,直接使用原有的构造函数就可以了。

     答:ImageIcon leftButtonIcon=new ImageIcon("images/a.png");

     问题3:你引用的图片的大小需要自己进行设置,否则会比较大的哦。

  • 相关阅读:
    点聚weboffice插件自定义菜单
    Delphi程序带参数运行
    64位系统下注册32位dll文件
    64位进程调用32位dll的解决方法
    memcached启动脚本以及telnet测试
    LSM树由来、设计思想以及应用到HBase的索引
    B树(B-Tree)的由来、数据结构、基本操作以及数据库索引的应用
    java读取utf8配置文件乱码
    设置某个ip对mysql服务器有权限,以及mysql定时备份
    《HBase实战》
  • 原文地址:https://www.cnblogs.com/meihao1989/p/3190816.html
Copyright © 2011-2022 走看看