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–
[转载]解决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–
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–
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的网络日志认领代码:
欢迎大家订阅我的博客
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–
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–
MyEclipse恢复误删文件
方法:
在要恢复的工程上右击->Restore from Locle History…
选中要恢复的,点Resotre就可以了
这个功能不紧能够恢复误删文件,而且还能查看以前的某个时间点文章的内容。方法:选中你查看的文件,右侧就会出现一些时间,选中后在下面就能看到这个时间时文件的内容了,但只能查看7天内(为验证)。
–EOF–
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–
修改eclipse(MyEclipse)自动生成的author
打开eclipse如下操作:
window->Preferences…->Java->Code Style->Code Templates
在右侧依次选择:Comments->Type,点Edit
/**
* @author ${user}
*
* ${tags}
*/
中的${user}改为你要改的名字就可以了。
例如
/**
* @author wasw100
*
* ${tags}
*/
–EOF–
人人网积分攻略
获得高的积分,在积分排行榜上就会靠前,自己同学和朋友访问的可能性就增加不少,而且排行靠前的感觉也是很爽的。
1.每天记得改一次状态(这个不难吧,可以只换个表情),给同学留言一次,再就是上传一张图片
2.回复与被回复,很累,可以不做,最重要的第三条
3.连续登陆,坚持,然后每天人人桌面(2倍),手机页面(http://3g.renren.com),手机客户端。假如你已经连续30天以上了,光登陆每天就可以获取40积分。所以每天用各种登陆方式登陆一遍人人网是必须的。
–EOF–