java如何作标签云?
标签云(Tag Cloud)是用以表示一个网站中的内容标签。标签的排列顺序一般依照字典排序,按照热门程度确定字体的大小和颜色。这样,依照字典或者热门程度来寻找信息便成为可能。标签通常是超链接,指向分类页面。
标签云现在用javascript很容易实现,而且效果也很炫,在网络应用中比较多,但是java的桌面应用J2SE却很少,好像很难实现这种,但是最近发现java的图像界面也可以,我用的swt做的,实现用户关键词标签云生成。
经过几天的研究,本来想用awt做,发现这玩意儿不行,最后发现swt有这个能力,实在维基百科里面找到的,下面我自己改写的一个程序共分享
效果:
部分代码
public class TagCloudShow {
.Display display = new Display();
Shell shell = new Shell(display);
public static int rndColor(){
int[] color = {SWT.COLOR_BLUE, SWT.COLOR_CYAN, SWT.COLOR_RED, SWT.COLOR_YELLOW, SWT.COLOR_GREEN, SWT.COLOR_BLACK, SWT.COLOR_DARK_YELLOW, SWT.COLOR_DARK_BLUE, SWT.COLOR_DARK_GREEN, SWT.COLOR_MAGENTA};
Random r = new Random();
return color[r.nextInt(color.length)];
}
public static int rndangle(double weight){
if(weight >= 0.6){
return getRandom(-15,15);
}else if(weight < 0.6&&weight > 0.3){
return getRandom(16,45);
}else if(weight <= 0.3&&weight > 0.2){
return getRandom(46,90);
}else
return getRandom(-90,-15);
}
public static int getRandom(int start,int end){
return (int)(Math.random()*(end-start+1))+start;
}
public static void main(String [] args) {
Map<String, Double> m = new HashMap<String, Double>();
m.put("中国", 0.6);
m.put("华师", 0.4);
m.put("中心", 0.1);
m.put("国家", 0.8);
m.put("米兰", 0.2);
m.put("足球", 0.4);
m.put("伊拉克", 0.3);
m.put("韩国", 0.3);
m.put("博雅", 0.4);
m.put("日本", 0.05);
m.put("美国", 0.3);
m.put("曼联", 0.5);
m.put("篮球", 0.3);
m.put("伊朗", 0.2);
System.out.println(m);
wordBags(m);
}
}