博文
载入图片的几种常用方法(2006-05-10 08:23:00)
摘要:
载入图片的几种常用方法
/**
* <p>Title: PaintPanel</p>
* <p>Description:此程序演示如何载入图片,并让其作为panel的背景</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: gift2u</p>
* @author liwu chinajavaworld
* @version 1.0
*/
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.net.URL;
import java.net.*;
import java.awt.MediaTracker;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.*;
import java.awt.Toolkit;
public class PaintPanel
extends JPanel {
Image image = null;
/**
* PaintPanel
* 外部给图片,直接载入
* @param image Image
*/
public PaintPanel(Image image) {
this.image = image;
}
/**
* PaintPanel......
跟我学Java Swing之游戏设计(2006-05-09 16:44:00)
摘要:
谁知道通天的巴比伦塔耗费了多少沙石?又有谁知道罗马的建成经历了多少个日夜?我们惟一知道的是,没有一块块砖石的垒砌,就没有蜿蜒万里的长城;没有巨石和黏土的堆集,就没有亘古不变的金字塔。由此可见,基础知识的准备对于我们学习任何事物都至关重要,那么,就让我们从认识Swing的一些基础功能开始,启动我们建造罗马的伟大工程吧!
前言
Java咖啡馆已经开张不少时日了,如果你已经喜欢上了Java这杯咖啡的味道,那么记得常来哦。这一次,我们为大家准备了一大杯香浓的咖啡——将以开发一个“连连看”游戏为蓝本,和大家共同学习Java中Swing的用法,当你细心品味这杯咖啡后,你会发现,不但Java这杯咖啡还别有一番风味,而且还学会了专业游戏的开发方法,真是两全其美!
为了让大家先睹为快,下图便是游戏的截图。大家可以下载游戏试玩(下载游戏程序;下载源文件),然后在命令行方式下使用java -jar kyodai.jar来运行。此外,还可以到我的主页http://www.ismyway.com上下载这个游戏的单机版以及手机版进行试玩(见图1)。
Java咖啡馆以前介绍过AWT的知识,那么Swing和AWT究竟有什么区别呢?学习Java的人都可能听到或看到过重量级控件和轻量级控件这个字眼,AWT就是我们通常所指的重量级控件,Swing则是轻量级控件。我们都知道Java的口号是“一次编写,到处运行”,这也就要求在我们的程序中,尽量使用纯Java的代码。很不幸的是,AWT依赖与本地平台的接口,因此,在不同的操作系统上,使用AWT制作的界面看起来可能会有些细微区别。Swing则完全不同了,Swing是用纯Java编写的,因此,使用Swing编写的界面能保证在所有平台上有着同样的外观。这里还有一个窍门:在JDK中,为便于区别,所有Swing控件都以大写字母J开头,比如说JButton(AWT 中对应的是Button),这样你就很容易区分Swing控件和AWT控件了。
Swing初体验
对于想学习Swing编程的朋友,我们特地为大家准备了一些小窍门。首先,下载并阅读代码是极有必要的。由于这是一篇关于Swing的教程,所以,我们只是尽可能讲解一些与Swing有关的内容,与Swing无关的内容一般不会涉及,例如算法部分。其次,受篇幅限制,也不可能在这里将每部分代......
浅谈JAVA程序破解(2006-05-09 16:12:00)
摘要:
最近对JAVA程序的破解比较感兴趣,拿几个行业软件练了一下手,略有心得,拿出来与菜鸟分享!注意只是一点心得,本文并不涉及具体软件的破解。初学破解,失误之处在所难免,敬请高手赐教!
直接进入正题,对JAVA的破可从下面几方面入手:
一、反编译
工具很多,建议用GUI工具,命令行下的Jad很容易因为不能反编译某一个方法或某一行代码而终止整个文件的反编译,但GUI的工具却能搞定,虽然反编译后部分代码较难看懂,但总比看jvm指命要好得多。而且,GUI的工具多数有批量反编译功能,且能让反编译的文件直接以.java为后缀保存,也是方便之处。
浅谈JAVA程序破解
二、方法调用
安全意识强的开发者会把他的程序进行高质量的混淆,下面就是一个例子
public static Object getRemoteEJBHome(String OOOoOo00oO0O0O0ooOoOO, Class OO0oOO0O0o0oO0o00oOoO)
throws NamingException {
try{
if(OoO0o0o0O0oo0oO00oOO0 == null)
OoO0o0o0O0oo0oO00oOO0 = OoOOoOOO0Oo0OO0OooO0o();
Object OOOOOo00000OoOoO0O000 =
PortableRemoteObject.narrow(OoO0o0o0O0oo0oO00oOO0.lookup(OOOoOo00oO0O0O0ooOoOO), OO0oO......
下载URL的内容(2006-05-09 16:09:00)
摘要:
/*
* Copyright (c) 2000 David Flanagan. All rights reserved.
* This code is from the book Java Examples in a Nutshell, 2nd Edition.
* It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
* You may study, use, and modify it for any non-commercial purpose.
* You may distribute it non-commercially as long as you retain this notice.
* For a commercial use license, or to purchase the book (recommended),
* visit http://www.davidflanagan.com/javaexamples2.
*/
import java.io.*;
import java.net.*;
/**
* 这个......
由域名地址求IP(2006-05-09 16:08:00)
摘要:
//由命名行输入域名地址即可求出对应的IP地址。
import java.net.*;
public class nslookup{
public static void main(String args[]) throws Exception{
String host=args[0];
InetAddress address=null;
try{
address=InetAddress.getByName(host);
}catch(UnknownHostException e ){
System.out.println("Unknown host");
System.exit(0);
}
byte[] ip=address.getAddress();
for(int i=0;i<ip.length;i++){
i......
用JAVA程序取得IP地址(2006-05-09 16:07:00)
摘要:
在TCP/IP 互联网时,经常会需要查询自己主机的IP地址和www服务器的IP地址。虽然,我们可以使用IPCONFIG 和PING 进行IP地址查询,但是如果在应用程序或APPLET中使用此命令回破坏我们应用程序界面。
为此本人使用JAVA 做了一个简单的程序可以直接查询自己主机的IP地址和www服务器的IP地址。
// 文件名为 NetTool.java (注意:在JAVA 语言中大小写敏感)
import java.net.*;
public class NetTool{
InetAddress myIPaddress=null;
InetAddress myServer=null;
public static void main( String args[]){
NetTool mytool;
mytool=new NetTool();
System.out.println("Your host IP is: "+ mytool.getMyIP());
System.out.println("The Server IP is :"+mytool.getServerIP());
}
//取得LOCALHOST的IP地址
public InetAddress getMyIP() {
try { myIPaddress=InetAddress.getLocalHost();}
catch (UnknownHostExcep......
Javamail操作指南(2006-05-09 16:06:00)
摘要:
Bromon原创 请尊重版权
怎样才算比较完整的Javamail操作指南?我想应该包括绝大多数基本的email操作,能够应付一般的应用。在本指南中打算囊括以下内容:
● 发送email:包括文本邮件、HTML邮件、带附件的邮件、SMTP验证
● 接收email:pop3远程连接、收取不同MIME的邮件、处理附件
我想有了上述功能的介绍,应该可以应付很多email的相关应用了。所以请允许我给本文拟了一个比较狂妄的名字,这样才能保证收视率,。还是那句话,写这个post的原因就是没有在网上看到更全面的,你看过的话记得要告诉我。
下面的所有例子都经过实际测试,你可以说它写得不够OO,不够plugable,但是它的确是可以参考的。自从有了javamail,发垃圾邮件就方便多了。本文代码多说明少,这倒不是我偷懒,而是很多东西都涉及pop3等协议的规范,如果不了解这些规范的话,由的东西我实在不知道怎么跟你解释;如果了解的话,那我基本上就不用再解释。所以本着实用的原则就省略了,由兴趣的话自己去翻翻协议规范。
废话少说,首先需要配置环境。需要的包是mail.jar和activation.jar。高版本的J2SDK EE自带。地址嘛,再java.sun.com上搜索一下,很容易找到。放到classpath中就KO。
一、 邮件的发送
下面了弄个发邮件的Hello World,热热身:
/*************
Name:TextMailSender.java
Author:Bromon
Version:1.0
Date:2004-4-26
Note:发送email到bromon@163.com,需要安装SMTP服务器
*************/
package org.bromon.mail;
&nbs......
一个简单的线程池(2006-05-09 16:06:00)
摘要:此代码来自《java游戏编程》,北京希望电子出版社。David Brackeen著 邱仲潘译。线程池的入门代码。站长整理。
import java.util.LinkedList;
public class ThreadPool extends ThreadGroup {//作为线程组来实现线程池,新颖
private boolean isAlive;//此线程池是否激活
private LinkedList taskQueue;//存放任务的链表
private int threadID;//线程池中的线程数
private static int threadPoolID;//用来记数,实例化了多少个线程池对象
/**
创建一个新的线程池.
@param numThreads 池中的线程数.
*/
public ThreadPool(int numThreads) {
super("ThreadPool-" + (threadPoolID++));
setDaemon(true);
Java解析网络数据流的三种特殊方法(2006-05-09 16:05:00)
摘要:
Java作为最开放的语言,已越来越受到网络程序员的青睐。但这一青睐族有着同样的经历——曾经都为网络上通信的Java数据格式而烦脑。
笔者也不例外,曾经为此而查阅了很多文档,经过反复测试才得以解决,如今笔者已经在所从事的很多电子政务项目中顺利的应用。今天笔者写此文,介绍用Java解析网络数据的三种特殊方法,希望对正在寻求这方面问题答案的读者有所帮助。
UTF8转换成GB2312 当我们在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO-8859-1标准编码能够轻易的实现,下面的代码实现了这一功能:
byte [] b;
String utf8_value;
utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据
b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡
String name = new String(b, "GB2312"); //转换成GB2312字符
在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始下标,int len指定需要读取的长度,方法返回实际读取的字节数。刚学Java的朋友可能要说:先定......
告别System.out.print()(2006-05-09 16:04:00)
摘要:告别System.out.print()
—J2SDK1.4新增Java日志框架
(作者:Sonzhang Zhao )
J2SDK1.4的Java日志框架,其实总结起来主要是下面几点:
命名空间:空间外层包含内层的设置
Handler:可以将日志信息放入内容,定向到文件,或控制台等
Lever:规定日志的级别,低级别的日志可以被忽略
Formatter:负责将日志进行格式化,这样出来的东西比较好看一点
引言
作为一名Java 程序员,最熟悉的、使用最多的调用恐怕莫过于System.out.print(“…”)。当你没有调试工具而要跟踪一个变量的值得时候;当你需要显示捕获的Exception、Error的时候;当你想知道程序在运行的时候究竟发生了什么的时候,通常的做法就是调用System.out.print把他们在终端、控制台上打印出来。这种方式对于输出信息的分类、格式化及永久保存带来诸多不便。虽然我们可以把它写入一个文件然后进行分析,但是这要需要编写额外的程序代码,其成本不可忽视!而由此给目标系统本身增加的复杂程度不可避免的使开发、调试陷入一个深深的迷潭。
JDK1.4的推出,使得这一切即将成为历史。让我们向System.out.print()告别吧,使用Java Logging API为自己的程序构建一个完整的日志记录系统!
一、第一个实例
先看一个简单的实例:SimpleLoggingTest.java
import java.util.logging.*;
public class SimpleLoggingTest {
public static void main(String&nbs......