问题1:

 public ButtonDemo(){
//ImageIcon leftButtonIcon=new ImageIcon("images/a.png");
ImageIcon leftButtonIcon=createImageIcon("images/a.png");
ImageIcon middleButtonIcon=createImageIcon("images/middle.png");
ImageIcon rightButtonIcon=createImageIcon("images/right.gif");

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

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

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

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

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

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

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

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

java.lang.class.getResource()。

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

TT的回答:

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

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

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

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

一个ButtonDemo序(遇到的问题,以及在大牛的帮助下,如何解决的。)的更多相关文章

  1. 关于“找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上。”的解决

    关于“找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上.”的解决 一个项目需要在Win系统用计划任务执行PHP,写了个批处理bat利用php-cgi.ex ...

  2. spring 默认情况下事务是惟一的 同一个方法里面第一个sql开启后 在执行完 将事务传递给下一个sql

    spring 默认情况下事务是惟一的 同一个方法里面第一个sql开启后 在执行完 将事务传递给下一个sql

  3. 您好,python的请求es的http库是urllib3, 一个请求到贵司的es节点,想了解下,中间有哪些网关啊?冒昧推测,贵司的部分公共网关与python-urllib3的对接存在异常?

    您好,python的请求es的http库是urllib3, 一个请求到贵司的es节点,想了解下,中间有哪些网关啊?冒昧推测,贵司的部分公共网关与python-urllib3的对接存在异常? 负载均衡( ...

  4. 最近研究了一个.NET的DHT网络搜索引擎,顺便重新整理了下引擎思路,供大家分享讨论下。

    最近研究了一个.NET的DHT网络搜索引擎,顺便重新整理了下引擎思路,供大家分享讨论下.

  5. C语言两个升序递增链表逆序合并为一个降序递减链表,并去除重复元素

    #include"stdafx.h" #include<stdlib.h> #define LEN sizeof(struct student) struct stud ...

  6. 一个ButtonDemo的实现过程。

    来自JDK API 1.6.0: Try this: Click the Launch button to run the Button Demo using Java™ Web Start (dow ...

  7. python 根据两个字段排序, 一个升序, 一个降序

    from collections import Counter c = Counter(input()) l=sorted(c.items(), key=lambda s:(-s[], s[])) ] ...

  8. iosselect:一个js picker项目,在H5中实现IOS的下拉效果

    iosselect是在webapp下的一个picker组件,可以轻松实现各类选择器效果.比如地区选择 时间选择 日期选择等. 下面是一个地址选择器demo截图,可以访问:http://zhoushen ...

  9. database first表更新一个表会更新所有的model,包括添加验证代码,解决办法

    因为model类是自动生成的,重新生成后会覆盖自己的修改.一个比较合理做法,就是用 partial class的方式来实现. 比如有一个Model类: Movie.那我们就可以添加一个局部类文件,局部 ...

随机推荐

  1. @angular/cli项目构建--路由2

    app.module.ts update const routes: Routes = [ {path: '', redirectTo: '/home', pathMatch: 'full'}, {p ...

  2. linux shell 学习笔记--比较操作

    整数比较 -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b&qu ...

  3. BZOJ4923 [Lydsy1706月赛]K小值查询

    题意 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. \(n \leq 10 ...

  4. 【模板】【学习笔记】noip数学

    一.素数 欧拉筛 void prime(){ check[]=; ;i<=n;i++){ if(!check[i])prim[++cnt]=i;//这个if语句后面没有大括号!! ;j<= ...

  5. P1230 智力大冲浪(洛谷)

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则: ...

  6. mongodb所在目录空间不足解决方法

    1.原理是将目录/home/aa软连接到/usr/lib/下,以后从/usr/lib下读取的内容其实都是放在/home/aa下. 建议不要大范围动/usr下的内容,咋着也是属于系统目录,可能会对已装软 ...

  7. node.js 笔记(一)

    参考:https://github.com/alsotang/node-lessons 感谢!!! 本文属于小白入门级笔记,请大牛自动屏蔽!!! 1.     开发环境 os: 10.12.6 nod ...

  8. jquery.tmpl的使用

    jquery.tmpl是jQuery模板插件,http://plugins.jquery.com/tmpl/ (另外还有一个插件dot.js,不依赖与jquery,性能更佳,使用方法大同小异) 在网页 ...

  9. 【转】深入剖析Java中的装箱和拆箱

    深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...

  10. python函数之sorted与sort

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. sorted(iterable,key=None,revers ...