wasw100's Blog
2012/02/23

Google AD

2010年03月31日

java中Swing图片显示

参考:
1.http://topic.csdn.net/u/20090914/15/689b5bb2-1bfd-4455-9599-8116fa42c2ef.html
2.How to Use Icons

swing显示图片的方法有好几种,因为JLabel用于短文本字符串或图像或二者的显示区,所以也可以使用JLabel的icon显示,或者JLabel支持html的特性显示图片。可以使用图片重绘显示图片。

下面是两个JLabel显示图片的很简单的例子。

例子1:使用JLabel支持html的特性显示图片

package test;

import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * 使用JLabel支持html显示图片
 * @author wasw100
 */
public class DisplayImageHtml extends JFrame {

	private JLabel lblImg;

	public DisplayImageHtml() {

		setTitle("swing显示图片");
		setSize(200, 140);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);

		lblImg = new JLabel();
		add(lblImg);
		setVisible(true);

		lblImg.setText("<html><img src='http://www.wasw100.com/wp-content/themes/inove/img/logo.gif' /><html>");
	}

	public static void main(String[] args) {
		new DisplayImageHtml();
	}
}

例2:使用JLabel的setIcon显示图片

package test;

import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class DisplayImageIcon extends JFrame {

	private JLabel lblImg;
	private Icon icon;

	public DisplayImageIcon() {

		setTitle("swing显示图片");
		setSize(200, 140);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);

		lblImg = new JLabel();
		add(lblImg);
		setVisible(true);

		try {
			icon = new ImageIcon(new URL("http://www.wasw100.com/wp-content/themes/inove/img/logo.gif"));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		lblImg.setIcon(icon);

	}

	public static void main(String[] args) {
		new DisplayImageIcon();
	}
}

–EOF–

2010年03月29日

[转载]解决jQuery的JSON缓存问题

转自:http://halk.javaeye.com/blog/592306

现象: 页面使用jQuery的Ajax方式更改内容,提交保存至数据库后使用jQuery.getJSON方式重新读取数据,页面没有更新,重新登录系统后页面才显示更改后的数据。

原因: IE会缓存jQuery的get请求,导致不能查询到新的数据

解决方法

1、在请求URL后添加随机数,例如:

var url ="/operaterMultiAction.do?randomNum="+Math.random();

2、使用POST方式定义JSON调用,如:

$.postJSON = function(url,data,callback){
        $.post(url,data,callback,"json");
}

3、使用ajax方法,声明缓存为false

$.ajax({
        url:"/operaterMultiAction.do",
        dataType:"json",
        cache:false,
        success:function(data){
        }
    });

–EOF–

2010年03月28日

java swing程序最小化到托盘区

很多桌面程序需要长时间运行,我们不想一直占用宝贵的任务栏,这时我们需要最小化时把程序放到托盘区,以下就是java中swing程序最小化到托盘区的例子,注释很详细:

package com.wasw100;

import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class TrayTest extends JFrame{

	private JLabel lbHello = new JLabel("Hello World");

	private Image icon;// 托盘图标
	private TrayIcon trayIcon;
	private SystemTray systemTray;// 系统托盘
	private PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单
	private MenuItem exit = new MenuItem("退出程序");
	private MenuItem show = new MenuItem("显示窗口");

	public TrayTest(){

		//托盘图标部分结束
		// icon初始化
		icon = Toolkit.getDefaultToolkit().getImage(
				this.getClass().getResource("icon.gif"));//托盘图标显示的图片

		if (SystemTray.isSupported()) {
			systemTray = SystemTray.getSystemTray();// 获得系统托盘的实例
			trayIcon = new TrayIcon(icon, "鼠标放到托盘图标上的文字", pop);
			// wasw100
			pop.add(show);
			pop.add(exit);

			try {
				systemTray.add(trayIcon); // 设置托盘的图标
			} catch (AWTException e1) {
				e1.printStackTrace();
			}
			addWindowListener(new WindowAdapter() {
				public void windowIconified(WindowEvent e) {
					dispose();// 窗口最小化时dispose该窗口
				}
			});

			trayIcon.addMouseListener(new MouseAdapter() {
				public void mouseClicked(MouseEvent e) {
					if (e.getClickCount() == 1
							&& e.getButton() != MouseEvent.BUTTON3) {// 左击击托盘窗口再现,如果是双击就是e.getClickCount() == 2
						setVisible(true);
						setExtendedState(JFrame.NORMAL);//设置此 frame 的状态。
					}
				}
			});

			show.addActionListener(new ActionListener() { // 点击"显示窗口"菜单后将窗口显示出来

						public void actionPerformed(ActionEvent e) {
							// systemTray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
							setVisible(true); // 显示窗口
							setExtendedState(JFrame.NORMAL);
						}
					});
			exit.addActionListener(new ActionListener() { // 点击“退出演示”菜单后推出程序

						public void actionPerformed(ActionEvent e) {
							//这里可以写执行退出时执行的操作
							System.exit(0); // 退出程序
						}
					});
		}// 托盘图标部分结束

		//以下是swing程序
		setIconImage(icon);//更改程序图标

		add(lbHello);
		setTitle("hello");
		setSize(200, 150);
		//自动确定窗口位置
		setLocationByPlatform(true);
		//点击关闭按钮能够自动退出
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

	public static void main(String[] args) {
		new TrayTest();
	}
}

–EOF–

2010年03月24日

QQ订阅我的博客(QQ订阅博客认领)

QQ邮箱订阅本博客:
用QQ邮箱阅读空间订阅我的博客。

上面代码如下:

<a href="http://mail.qq.com/cgi-bin/feed?u=http://feeds2.feedburner.com/wasw100" target="_blank">
<img src="http://res.mail.qq.com/zh_CN/htmledition/images/rss/icon_sub02.gif" alt="用QQ邮箱阅读空间订阅我的博客。" border="0" />

认领博客 wasw100的网络日志

认领代码:

QQREADER54882C48BC6C6C55

欢迎大家订阅我的博客

2010年03月20日

MyEclipse右击Run As出现Eclipse Application解决

自己写的一个程序运行的时候,右击,鼠标放到Run As后,右侧出现Eclipse Application,总是点错,打开一个新的Eclipse,如图

--Run As
	--Eclipse Application 	Alt+Shift+X, E
	--Java Application 		Alt+Shift+X, J
	--OSGi Framework		Alt+Shift+X, O
	-------------------------------------------
	--Open Run Dialog...

以下是解决方案:

打开你工程所在的位置,使用文本工具(记事本、UltraEdit、EditPlus等)打开.project文件改为如下就可以了

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>rrdogpro</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.jdt.core.javanature</nature>
	</natures>
</projectDescription>

也就是把多余的<buildCommand>和<natures>删除,只剩下上面那两个,重启MyEclipse,再右击Run As,Eclipse Application,OSGi Framework就不见踪影了。

–EOF–

2010年03月19日

Eclipse使用link方式安装svn插件

svn插件下载页面:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240

最新版本地址:http://subclipse.tigris.org/files/documents/906/47423/site-1.6.10.zip

下载后解压到一个文件夹(我的:D:\tools\eclipseplugin\svn\),在svn下如下文件目录

--svn
	--eclipse
		--features
		--plugins

然后在MyEclipse—>eclipse->links文件夹下建一个以link为扩展名的文件(org.tigris.subversion.link),内容如下:

path=D:\\tools\\eclipseplugin\\svn

删除D:\tools\MyEclipse 6.0\eclipse\configuration下的org.eclipse.update文件夹,重启MyEclipse。

–EOF–

2010年03月18日

MyEclipse恢复误删文件

方法:
在要恢复的工程上右击->Restore from Locle History…
选中要恢复的,点Resotre就可以了

这个功能不紧能够恢复误删文件,而且还能查看以前的某个时间点文章的内容。方法:选中你查看的文件,右侧就会出现一些时间,选中后在下面就能看到这个时间时文件的内容了,但只能查看7天内(为验证)。

–EOF–

2010年03月16日

java中Queue和BlockingQueue的区别

内容主要来自jdk的api,大家可参考jdkapi
1.BlockingQueue:支持两个附加操作的 Queue,这两个操作是:检索元素时等待队列变为非空,以及存储元素时等待空间变得可用。
2.BlockingQueue 不接受 null 元素。
3.BlockingQueue 可以是限定容量的。
4.BlockingQueue 实现是线程安全的。Queue不是线程安全的。因此可以将Blockingqueue用于用于生产者-使用者队列。

根据Api修改的一个例子,大家可以修改自己体验BlockingQueue的使用

package test;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

/**
 * 生产者
 * @author wasw100
 */
class Producer implements Runnable {
	private final BlockingQueue queue;

	Producer(BlockingQueue q) {
		queue = q;
	}

	public void run() {
		try {
			for (int i = 0; i < 3; i++) {
				queue.put(produce());
				System.out.println("生产后:"+queue.peek());
			}
		} catch (InterruptedException ex) {
			ex.printStackTrace();
		}
	}

	Character produce() {
		char c = (char) (Math.random() * 26 + 'A');
		System.out.println("生产前:" + c);
		return c;
	}
}

/**
 * 消费者
 * @author wasw100
 */
class Consumer implements Runnable {
	private final BlockingQueue queue;

	Consumer(BlockingQueue q) {
		queue = q;
	}

	public void run() {
		try {
			while (true) {
				consume(queue.take());
				//Thread.sleep(100);
			}
		} catch (InterruptedException ex) {
			ex.printStackTrace();
		}
	}

	void consume(Character c) {
		System.out.println("消费:" + c);
	}
}

/**
 * 一个生产者、两个消费者
 *
 * @author wasw100
 */
class Setup {
	public static void main(String[] args) {
		BlockingQueue q = new ArrayBlockingQueue(1);
		Producer p = new Producer(q);
		Consumer c1 = new Consumer(q);
		Consumer c2 = new Consumer(q);
		new Thread(p).start();
		new Thread(c1).start();
		new Thread(c2).start();
	}
}

–EOF–

2010年03月15日

修改eclipse(MyEclipse)自动生成的author


打开eclipse如下操作:
window->Preferences…->Java->Code Style->Code Templates

在右侧依次选择:Comments->Type,点Edit

/**
 * @author ${user}
 *
 * ${tags}
 */

中的${user}改为你要改的名字就可以了。
例如

/**
 * @author wasw100
 *
 * ${tags}
 */

–EOF–

2010年03月13日

人人网积分攻略

获得高的积分,在积分排行榜上就会靠前,自己同学和朋友访问的可能性就增加不少,而且排行靠前的感觉也是很爽的。

1.每天记得改一次状态(这个不难吧,可以只换个表情),给同学留言一次,再就是上传一张图片

2.回复与被回复,很累,可以不做,最重要的第三条

3.连续登陆,坚持,然后每天人人桌面(2倍),手机页面(http://3g.renren.com),手机客户端。假如你已经连续30天以上了,光登陆每天就可以获取40积分。所以每天用各种登陆方式登陆一遍人人网是必须的。

–EOF–

返回顶部