Java 编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 编程相关的知识,希望对你有一定的参考价值。

Java 编程 资源管理器 缩略图

现在要用Java做一个类似于资源管理器的东西,左边一栏我已经用JTree实现,剩下右边一栏缩略图。请问高手是如何根据左边的文件夹里的文件在右边显示的文件缩略图。(且双击后有反应。)
(事实上我是要做个图片浏览器,所有右边只需要显示图片格式的文件就行了。)
我暂时想到的方法是打开所有图片生成缩略图然后new 各个图的对象。使用FlowLayout。
求更好的方法!!!!!!能够帮我解决好的,最高可提高悬赏分至200。

我刚刚找到一点点思路,希望对你有帮助。

你把电脑的系统隐藏文件都改成可见的,如果你在有图片的文件夹打开,会发现里面有一个文件叫thumb.db这个文件。 这个应该是一个数据库文件,存放的是图片文件夹里面图片的缩略图。当我们打开文件夹的时候,我们就会文把缩略图从数据库中读取出来,然后再在屏幕上绘制出来。这个方案的好处就是除了首次绘制图片比较慢,以后速度会非常快的。
这个已经算是最好的解决方案了。

证据:
如果你把缩略图的数据库删除掉,然后在文件夹选项中,选中不缓存缩略图,那么你打开文件夹,显示缩略图,会非常慢。至少我能明显感觉出来。微软都采用这种方案,所以建议你也采用该方案。追问

我想起来是有这么个东西,但是我显示隐藏文件也找不到它,显示系统保护文件也找不到它。win7

追答

嗯 我的是XP 的,win 7的话,找起来好像有点麻烦
不过你在CMD命令行里面看一下,你试试看。应该可以的。
如果你CMD 命令行 : 开始 ->运行->输入CMD ,回车。这个时候你进入指定的目录下,dir/a 就可以查看到全部的文件,包括隐藏的。

我给你的是解决问题的思路,你没有必要找到那东西的。可以利用数据库来解决缓存的问题。

追问

这的确是个很不错的解决方法,但是我这个学期才在学习数据库,所以实现起来应该还是很大问题。
CMD这些我明白,也进去看了,找不到那个文件,不知道win7是采用什么方法处理这个缩略图问题了。我在linux下进入windows的盘是所有数据的显示出来的,也没有发现那个.db文件

追答

这已经算是比较好的办法了,别的你有比这个更好的办法?

另外所谓的数据库学习,你最好别等到老师教你。因为老师教你之后,你也不怎么会使用。还是自己一点一滴摸索吧。我见过很多人,都是通过自己摸索出来的,中国的老师的软件水平并不高,都是混口饭吃的。你自己去学习数据库吧!

win 7 找不到那个东西?那么可能win 7 采用其他的方式,我一直都没用win 7 ,所以更详细的细节我猜想不出来。 呵呵。想起来,我再告诉你吧。 你很厉害,我到现在才开始学习JAVA。

参考技术A 我这有一个办法,自己用程序写一个html字符串,然后往里插入图片链接,让系统的控件自己去加载。 参考技术B 没有好的办法。只能适合着用。 参考技术C
在装JDK的时候可以下个JDK Documentation 。很有用~不过E文要过关啊~
Documentation 在JDK的下载页面有下载连接,是最最重要的编程手册,涵盖了整个Java所有方面的内容的描述。可以这样说,学习Java编程,大部分时间都是花在看这个Documentation上面的。

Java编程题

java写一个猴子类,必须提供它的名称,种类,体重,出生年月,生活地点等属性以及吃香蕉、跑动等方法,要求必须继承一个基类(基类自定义,子类重载基类的某些方法);

参考技术A 第一题:<pre t="code" l="java">

public class People

private String name;

public String speak()
return "";

public String getName()

return name;


public void setName(String name)

this.name = name;




public class American extends People

private String name;

@Override
public String speak()

return "i’m speak English";


public String getName()

return name;


public void setName(String name)

this.name = name;




public class Chinese extends People

private String name;

@Override
public String speak()

return "我说中国话";


public String getName()

return name;


public void setName(String name)

this.name = name;




import java.util.HashMap;
import java.util.Map;

public class Demo01

public static Map<?, ?> recruit(People[] people)

Map<String, String> resultMap = new HashMap<String, String>();
for (People p : people)

if ("我说中国话".equals(p.speak()))
resultMap.put(p.getName(), "中国人");
else
resultMap.put(p.getName(), "美国人");

return resultMap;


public static void main(String[] args)

Chinese chinese01 = new Chinese();
chinese01.setName("小明");
Chinese chinese02 = new Chinese();
chinese02.setName("小红");
American american = new American();
american.setName("Tom");

People[] peoples = new People[] chinese01, chinese02, american ;
Map<String, String> resultMap = new HashMap<String, String>(3);
resultMap = (Map<String, String>) recruit(peoples);
for (Map.Entry<String, String> entry : resultMap.entrySet())

String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + ":" + value);





/*
运行结果
Tom:美国人
小明:中国人
小红:中国人
*/ 第二题:<pre t="code" l="java">public class Engineer

private String name;

public String writerCode()

return "";


public String getName()

return name;


public void setName(String name)

this.name = name;




public class JavaEngineer extends Engineer

private String name;

@Override
public String writerCode()

return "在写Java代码";


public String getName()

return name;


public void setName(String name)

this.name = name;




public class iOSEngineer extends Engineer

private String name;

@Override
public String writerCode()

return "在写iOS代码";


public String getName()

return name;


public void setName(String name)

this.name = name;




import java.util.HashMap;
import java.util.Map;

public class Demo02

public static Map<?, ?> recruit(Engineer[] Engineer)

Map<String, String> resultMap = new HashMap<String, String>();
for (Engineer e : Engineer)

if ("在写Java代码".equals(e.writerCode()))
resultMap.put(e.getName(), "Java工程师");
else
resultMap.put(e.getName(), "iOS工程师");

return resultMap;


public static void main(String[] args)

JavaEngineer JavaEngineer01 = new JavaEngineer();
JavaEngineer01.setName("Sunny");
JavaEngineer JavaEngineer02 = new JavaEngineer();
JavaEngineer02.setName("Jain");
iOSEngineer iOSEngineer = new iOSEngineer();
iOSEngineer.setName("Tony");

Engineer[] Engineers = new Engineer[] JavaEngineer01, JavaEngineer02, iOSEngineer ;
Map<String, String> resultMap = new HashMap<String, String>(3);
resultMap = (Map<String, String>) recruit(Engineers);
for (Map.Entry<String, String> entry : resultMap.entrySet())

String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + ":" + value);




/*
运行结果:
Sunny:Java工程师
Jain:Java工程师
Tony:iOS工程师
*/

以上是关于Java 编程的主要内容,如果未能解决你的问题,请参考以下文章

java并发编程看啥书比较好

java如何编程

Java初学者如何学好Java编程?

Java编程题

《java编程思想》读后感

请用java编程: