- 浏览: 141609 次
- 性别:
- 来自: 广州
最新评论
-
SongRUyi88:
sb环境变量配置了没有,这样根本就启动不了
Win7 64位下配置jboss7 -
小小东:
不要配置环境变量吗???
Win7 64位下配置jboss7 -
hhb19900618:
你好 我这边老是看不到 log的输出是咋回事呢? logca ...
android开发log信息打印 -
saieuler:
写的太简洁了
软件设计的23中设计模式(转载) -
fxiaozj:
日期的处理,还有两个类没贴出来
常用+实用的java代码,网上摘的
来源:http://topic.csdn.net/u/20110331/23/f7ae08f2-5824-4162-8949-65e618fa5e82.html
我还没测试过,不知道其可用性,但是参考价值肯定是很高的。
貌似这个太长了,我上传了word文档
1.java访问xml文件
java code:
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class xmljava
{
public static void main(String args[])
{
Element element=null;
File f =new File("a.xml");
DocumentBuilder db=null; //documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)
DocumentBuilderFactory dbf=null;
try{
dbf= DocumentBuilderFactory.newInstance(); //返回documentBuilderFactory对象
db =dbf.newDocumentBuilder();//返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
Document dt= db.parse(f); //得到一个DOM并返回给document对象
element = dt.getDocumentElement();//得到一个elment根元素
System.out.println("根元素:"+element.getNodeName()); //获得根节点
NodeList childNodes =element.getChildNodes() ; // 获得根元素下的子节点
for (int i = 0; i < childNodes.getLength(); i++) // 遍历这些子节点
{
Node node1 = childNodes.item(i); // childNodes.item(i); 获得每个对应位置i的结点
if ("Account".equals(node1.getNodeName()))
{
// 如果节点的名称为"Account",则输出Account元素属性type
System.out.println("\r\n找到一篇账号. 所属区域: " + node1.getAttributes().getNamedItem ("type").getNodeValue() + ". ");
NodeList nodeDetail = node1.getChildNodes(); // 获得<Accounts>下的节点
for (int j = 0; j < nodeDetail.getLength(); j++)
{ // 遍历<Accounts>下的节点
Node detail = nodeDetail.item(j); // 获得<Accounts>元素每一个节点
if ("code".equals(detail.getNodeName())) // 输出code
System.out.println("卡号: " + detail.getTextContent());
else if ("pass".equals(detail.getNodeName())) // 输出pass
System.out.println("密码: " + detail.getTextContent());
else if ("name".equals(detail.getNodeName())) // 输出name
System.out.println("姓名: " + detail.getTextContent());
else if ("money".equals(detail.getNodeName())) // 输出money
System.out.println("余额: "+ detail.getTextContent());
}
}
}
}
catch(Exception e){System.out.println(e);}
}
}
Xml code:
<?xml version="1.0" encoding="gbk"?>
<Accounts>
<Account type="by0003">
<code>100001</code>
<pass>123</pass>
<name>李四</name>
<money>1000000.00</money>
</Account>
<Account type="hz0001">
<code>100002</code>
<pass>123</pass>
<name>张三</name>
<money>1000.00</money>
</Account>
</Accounts>
2.java jdbc数据库连接
java code:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBConnection {
public Connection conn = null; // 声明Connection对象的实例
public Statement stmt = null; // 声明Statement对象的实例
public ResultSet rs = null; // 声明ResultSet对象的实例
private static String dbClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";//定义保存数据库驱动的变量
private static String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_ATM";
private static String dbUser = "sa";
private static String dbPwd = "sa";
public JDBConnection(String propertyFileName) {// 带属性文件名的构造方法
Properties prop = new Properties();// 属性集合对象
InputStream is = null;
try {
is = JDBConnection.class.getClassLoader().getResourceAsStream(
propertyFileName);// 属性文件输入流
// is = new FileInputStream("src/" + propertyFileName);
prop.load(is);// 将属性文件流装载到Properties对象中
is.close();// 关闭流
dbClassName = prop.getProperty("dbClassName");
dbUrl = prop.getProperty("dbUrl");
dbUser = prop.getProperty("dbUser");
dbPwd = prop.getProperty("dbPwd");
} catch (Exception e) {
System.out.println("属性文件 " + propertyFileName + " 打开失败!");
}
try {
Class.forName(dbClassName);// 1.注册驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public JDBConnection() {// 默认的不带参数的构造函数
try {
Class.forName(dbClassName);// 1.注册驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection conn = null;
try {
// Class.forName(dbClassName);// 1.注册驱动
conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);//2.建立与数据库的链接
} catch (Exception ee) {
ee.printStackTrace();
}
if (conn == null) {
System.err
.println("警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:"
+ dbClassName
+ "\r\n链接位置:"
+ dbUrl
+ "\r\n用户/密码"
+ dbUser + "/" + dbPwd);
}
return conn;
}
/*
* 功能:执行查询语句
*/
public ResultSet executeQuery(String sql) {
try { // 捕捉异常
conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,//3.创建语句
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);//4.执行查询
} catch (SQLException ex) {
System.err.println(ex.getMessage()); // 输出异常信息
}
return rs; // 返回结果集对象 5.结果处理
}
/*
* 功能:执行更新操作
*/
public int executeUpdate(String sql) {
int result = 0; // 定义保存返回值的变量
try { // 捕捉异常
conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql); // 执行更新操作
} catch (SQLException ex) {
result = 0; // 将保存返回值的变量赋值为0
}
return result; // 返回保存返回值的变量
}
属性文件:
dbClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
dbClassName2=com.mysql.jdbc.Driver
dbPwd=sa
dbPwd2=root
dbUrl=jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=DB_ATM
dbUrl2=jdbc\:mysql\://localhost\:3306/db_atm
dbUser=sa
dbUser2=root
3.java自定义按钮外观
java code:
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.plaf.synth.SynthLookAndFeel;
public class MyButton {
JFrame frame = new JFrame("Test Buttons");
JButton jButton = new JButton("JButton"); // 按钮
public MyButton() {
frame.setLayout(new FlowLayout());
frame.getContentPane().add(jButton);
}
public void show() {
frame.pack();
frame.show();
}
public static void main(String[] args) {
MyButton tb = new MyButton();
tb.show();
SynthLookAndFeel slf = new SynthLookAndFeel();
try {
slf.load(MyButton.class.getResourceAsStream("mybutton.xml"), MyButton.class);
UIManager.setLookAndFeel(slf);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
}
Xml code:
<synth>
<style id="mybutton">
<state>
<imagePainter method="buttonBackground" path="mybutton.png" sourceInsets="3 6 12 20" paintCenter="true" stretch="true"/>
<insets top="3" left="6" bottom="12" right="20"/>
<font name="Aharoni" size="16"/>
</state>
<property key="Button.margin" type="insets" value="0 0 5 8"/>
</style>
<bind style="mybutton" type="region" key="Button"/>
</synth>
/*
* 功能:关闭数据库的连接
*/
public void close() {//6.释放资源
try { // 捕捉异常
try {
if (rs != null) { // 当ResultSet对象的实例rs不为空时
rs.close(); // 关闭ResultSet对象
}
} finally {
try {
if (stmt != null) { // 当Statement对象的实例stmt不为空时
stmt.close(); // 关闭Statement对象
}
} finally {
if (conn != null) { // 当Connection对象的实例conn不为空时
conn.close(); // 关闭Connection对象
}
}
}
} catch (Exception e) {
e.printStackTrace(System.err); // 输出异常信息
}
}
}
4.java访问资源文件
java code:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
public class PropertyEditor {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();// 属性集合对象
FileInputStream fis = new FileInputStream("prop.properties");// 属性文件输入流 (相对于根目录下的文件名,要加上包名 “src/prop.properties”)
prop.load(fis);// 将属性文件流装载到Properties对象中
fis.close();// 关闭流
// 获取属性值,sitename已在文件中定义
System.out.println("获取属性值:sitename=" + prop.getProperty("sitename"));
// 获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件
System.out.println("获取属性值:country=" + prop.getProperty("country", "中国"));
// 修改sitename的属性值
prop.setProperty("sitename", "中国");
// 添加一个新的属性studio
prop.setProperty("studio", "Boxcode Studio");
// 文件输出流
FileOutputStream fos = new FileOutputStream("prop.properties");
// 将Properties集合保存到流中
prop.store(fos, "Copyright (c) Boxcode Studio");
fos.close();// 关闭流
}
}
资源文件:
sitename=\u4E2D\u56FD
siteurl=www.abcjava.com
studio=Boxcode Studio
5.java日期处理bean
java code:
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class DateUtil {
protected static Log logger = LogFactory.getLog(DateUtil.class);
// 格式:年-月-日 小时:分钟:秒
public static final String FORMAT_ONE = "yyyy-MM-dd HH:mm:ss";
// 格式:年-月-日 小时:分钟
public static final String FORMAT_TWO = "yyyy-MM-dd HH:mm";
// 格式:年月日 小时分钟秒
public static final String FORMAT_THREE = "yyyyMMdd-HHmmss";
// 格式:年-月-日
public static final String LONG_DATE_FORMAT = "yyyy-MM-dd";
// 格式:月-日
public static final String SHORT_DATE_FORMAT = "MM-dd";
// 格式:小时:分钟:秒
public static final String LONG_TIME_FORMAT = "HH:mm:ss";
//格式:年-月
public static final String MONTG_DATE_FORMAT = "yyyy-MM";
// 年的加减
public static final int SUB_YEAR = Calendar.YEAR;
// 月加减
public static final int SUB_MONTH = Calendar.MONTH;
// 天的加减
public static final int SUB_DAY = Calendar.DATE;
// 小时的加减
public static final int SUB_HOUR = Calendar.HOUR;
// 分钟的加减
public static final int SUB_MINUTE = Calendar.MINUTE;
// 秒的加减
public static final int SUB_SECOND = Calendar.SECOND;
static final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四",
"星期五", "星期六" };
@SuppressWarnings("unused")
private static final SimpleDateFormat timeFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
public DateUtil() {
}
/**
* 把符合日期格式的字符串转换为日期类型
*/
public static java.util.Date stringtoDate(String dateStr, String format) {
Date d = null;
SimpleDateFormat formater = new SimpleDateFormat(format);
try {
formater.setLenient(false);
d = formater.parse(dateStr);
} catch (Exception e) {
// log.error(e);
d = null;
}
return d;
}
/**
* 把符合日期格式的字符串转换为日期类型
*/
public static java.util.Date stringtoDate(String dateStr, String format,
ParsePosition pos) {
Date d = null;
SimpleDateFormat formater = new SimpleDateFormat(format);
try {
formater.setLenient(false);
d = formater.parse(dateStr, pos);
} catch (Exception e) {
d = null;
}
return d;
}
/**
* 把日期转换为字符串
*/
public static String dateToString(java.util.Date date, String format) {
String result = "";
SimpleDateFormat formater = new SimpleDateFormat(format);
try {
result = formater.format(date);
} catch (Exception e) {
// log.error(e);
}
return result;
}
/**
* 获取当前时间的指定格式
*/
public static String getCurrDate(String format) {
return dateToString(new Date(), format);
}
public static String dateSub(int dateKind, String dateStr, int amount) {
Date date = stringtoDate(dateStr, FORMAT_ONE);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(dateKind, amount);
return dateToString(calendar.getTime(), FORMAT_ONE);
}
/**
* 两个日期相减
* @return 相减得到的秒数
*/
public static long timeSub(String firstTime, String secTime) {
long first = stringtoDate(firstTime, FORMAT_ONE).getTime();
long second = stringtoDate(secTime, FORMAT_ONE).getTime();
return (second - first) / 1000;
}
/**
* 获得某月的天数
*/
public static int getDaysOfMonth(String year, String month) {
int days = 0;
if (month.equals("1") || month.equals("3") || month.equals("5")
|| month.equals("7") || month.equals("8") || month.equals("10")
|| month.equals("12")) {
days = 31;
} else if (month.equals("4") || month.equals("6") || month.equals("9")
|| month.equals("11")) {
days = 30;
} else {
if ((Integer.parseInt(year) % 4 == 0 && Integer.parseInt(year) % 100 != 0)
|| Integer.parseInt(year) % 400 == 0) {
days = 29;
} else {
days = 28;
}
}
return days;
}
/**
* 获取某年某月的天数
*/
public static int getDaysOfMonth(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 获得当前日期
*/
public static int getToday() {
Calendar calendar = Calendar.getInstance();
return calendar.get(Calendar.DATE);
}
/**
* 获得当前月份
*/
public static int getToMonth() {
Calendar calendar = Calendar.getInstance();
return calendar.get(Calendar.MONTH) + 1;
}
/**
* 获得当前年份
*/
public static int getToYear() {
Calendar calendar = Calendar.getInstance();
return calendar.get(Calendar.YEAR);
}
/**
* 返回日期的天
*/
public static int getDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DATE);
}
/**
* 返回日期的年
*/
public static int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}
/**
* 返回日期的月份,1-12
*/
public static int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
}
/**
* 计算两个日期相差的天数,如果date2 > date1 返回正数,否则返回负数
*/
public static long dayDiff(Date date1, Date date2) {
return (date2.getTime() - date1.getTime()) / 86400000;
}
/**
* 比较两个日期的年差
*/
public static int yearDiff(String before, String after) {
Date beforeDay = stringtoDate(before, LONG_DATE_FORMAT);
Date afterDay = stringtoDate(after, LONG_DATE_FORMAT);
return getYear(afterDay) - getYear(beforeDay);
}
/**
* 比较指定日期与当前日期的差
*/
public static int yearDiffCurr(String after) {
Date beforeDay = new Date();
Date afterDay = stringtoDate(after, LONG_DATE_FORMAT);
return getYear(beforeDay) - getYear(afterDay);
}
/**
* 比较指定日期与当前日期的差
*/
public static long dayDiffCurr(String before) {
Date currDate = DateUtil.stringtoDate(currDay(), LONG_DATE_FORMAT);
Date beforeDate = stringtoDate(before, LONG_DATE_FORMAT);
return (currDate.getTime() - beforeDate.getTime()) / 86400000;
}
/**
* 获取每月的第一周
*/
public static int getFirstWeekdayOfMonth(int year, int month) {
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.SATURDAY); // 星期天为第一天
c.set(year, month - 1, 1);
return c.get(Calendar.DAY_OF_WEEK);
}
/**
* 获取每月的最后一周
*/
public static int getLastWeekdayOfMonth(int year, int month) {
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.SATURDAY); // 星期天为第一天
c.set(year, month - 1, getDaysOfMonth(year, month));
return c.get(Calendar.DAY_OF_WEEK);
}
/**
* 获得当前日期字符串,格式"yyyy_MM_dd_HH_mm_ss"
*
* @return
*/
public static String getCurrent() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
StringBuffer sb = new StringBuffer();
sb.append(year).append("_").append(StringUtil.addzero(month, 2))
.append("_").append(StringUtil.addzero(day, 2)).append("_")
.append(StringUtil.addzero(hour, 2)).append("_").append(
StringUtil.addzero(minute, 2)).append("_").append(
StringUtil.addzero(second, 2));
return sb.toString();
}
/**
* 获得当前日期字符串,格式"yyyy-MM-dd HH:mm:ss"
*
* @return
*/
public static String getNow() {
Calendar today = Calendar.getInstance();
return dateToString(today.getTime(), FORMAT_ONE);
}
/**
* 判断日期是否有效,包括闰年的情况
*
* @param date
* YYYY-mm-dd
* @return
*/
public static boolean isDate(String date) {
StringBuffer reg = new StringBuffer(
"^((\\d{2}(([02468][048])|([13579][26]))-?((((0?");
reg.append("[13578])|(1[02]))-?((0?[1-9])|([1-2][0-9])|(3[01])))");
reg.append("|(((0?[469])|(11))-?((0?[1-9])|([1-2][0-9])|(30)))|");
reg.append("(0?2-?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][12");
reg.append("35679])|([13579][01345789]))-?((((0?[13578])|(1[02]))");
reg.append("-?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))");
reg.append("-?((0?[1-9])|([1-2][0-9])|(30)))|(0?2-?((0?[");
reg.append("1-9])|(1[0-9])|(2[0-8]))))))");
Pattern p = Pattern.compile(reg.toString());
return p.matcher(date).matches();
}
属性文件: dbClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver dbClassName2=com.mysql.jdbc.Driver dbPwd=sa dbPwd2=root dbUrl=jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=DB_ATM dbUrl2=jdbc\:mysql\://localhost\:3306/db_atm dbUser=sa dbUser2=root
3.java自定义按钮外观
java code:
import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.UIManager; import javax.swing.plaf.synth.SynthLookAndFeel; public class MyButton { JFrame frame = new JFrame("Test Buttons"); JButton jButton = new JButton("JButton"); // 按钮 public MyButton() { frame.setLayout(new FlowLayout()); frame.getContentPane().add(jButton); } public void show() { frame.pack(); frame.show(); } public static void main(String[] args) { MyButton tb = new MyButton(); tb.show(); SynthLookAndFeel slf = new SynthLookAndFeel(); try { slf.load(MyButton.class.getResourceAsStream("mybutton.xml"), MyButton.class); UIManager.setLookAndFeel(slf); } catch (Exception e) { e.printStackTrace(); return; } } }Xml code:
<synth> <style id="mybutton"> <state> <imagePainter method="buttonBackground" path="mybutton.png" sourceInsets="3 6 12 20" paintCenter="true" stretch="true"/> <insets top="3" left="6" bottom="12" right="20"/> <font name="Aharoni" size="16"/> </state> <property key="Button.margin" type="insets" value="0 0 5 8"/> </style> <bind style="mybutton" type="region" key="Button"/> </synth>/* * 功能:关闭数据库的连接 */ public void close() {//6.释放资源 try { // 捕捉异常 try { if (rs != null) { // 当ResultSet对象的实例rs不为空时 rs.close(); // 关闭ResultSet对象 } } finally { try { if (stmt != null) { // 当Statement对象的实例stmt不为空时 stmt.close(); // 关闭Statement对象 } } finally { if (conn != null) { // 当Connection对象的实例conn不为空时 conn.close(); // 关闭Connection对象 } } } } catch (Exception e) { e.printStackTrace(System.err); // 输出异常信息 } } }
sitename=\u4E2D\u56FD
siteurl=www.abcjava.com
studio=Boxcode Studio
6.java dos输入输出
java code:
import java.util.*; public class DaoXu { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 System.out.println("请输入单个字符并回车: "); Scanner c = new Scanner(System.in); String[] ch = new String[5]; for(int i=0; i<5; i++){ ch[i] = c.next(); } //Arrays.sort(ch); System.out.print("倒序输出: "); for (int j = ch.length-1; j >= 0; j--) { System.out.print(ch[j]+" "); } } }
7.java获取ip地址
java code:
import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.InetAddress; import java.net.UnknownHostException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class ip extends JFrame implements ActionListener { private static final long serialVersionUID = 3339481369781127417L; JButton jb1; JButton jb2; JButton jb3; JPanel jp; JLabel jl; JLabel jl1; JTextField jt; public ip() { this.jp = new JPanel(); this.jl = new JLabel(); this.jl1 = new JLabel("您的域名:"); this.jb1 = new JButton("提交"); this.jb2 = new JButton("重置"); this.jb3 = new JButton("退出"); this.jt = new JTextField(20); this.jb1.addActionListener(this); this.jb2.addActionListener(this); this.jb3.addActionListener(this); this.jp.setLayout(new GridLayout(3, 2)); this.jp.add(this.jl1); this.jp.add(this.jt); this.jp.add(this.jb1); this.jp.add(this.jl); this.jp.add(this.jb2); this.jp.add(this.jb3); setBounds(200, 200, 500, 240); add(this.jp); setVisible(true); setDefaultCloseOperation(3); } public static void main(String[] args) { new ip(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == this.jb1) { String url = this.jt.getText(); InetAddress ip = null; try { ip = InetAddress.getByName(url); } catch (UnknownHostException e1) { e1.printStackTrace(); } this.jl.setText(ip.toString()); } else if (e.getSource() == this.jb2) { this.jl.setText(""); this.jt.setText(""); } else { System.exit(0); } } }
8.java系统托盘的应用
java code:
package com.msg; import java.applet.Applet; import java.applet.AudioClip; import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TextArea; 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 java.net.MalformedURLException; import java.net.URL; import java.util.Date; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel; /** * * 创建闪动的托盘图像 * @author Everest * */ public class BickerTray extends JFrame implements Runnable { private static final long serialVersionUID = -3115128552716619277L; private SystemTray sysTray;// 当前操作系统的托盘对象 private TrayIcon trayIcon;// 当前对象的托盘 private ImageIcon icon = null; private TextArea ta = null; private static int count = 1; //记录消息闪动的次数 private boolean flag = false; //是否有新消息 private static int times = 1; //接收消息次数 public BickerTray() { this.createTrayIcon();// 创建托盘对象 Image image = this.getToolkit().getImage(getRes("com/img/f32.gif")); this.setIconImage(image); init(); } public URL getRes(String str){ return this.getClass().getClassLoader().getResource(str); } /** * 初始化窗体的方法 */ public void init() { this.setTitle("消息盒子"); ta = new TextArea(""); ta.setEditable(false); this.add(ta); this.setSize(400, 400); //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); // 添加窗口最小化事件,将托盘添加到操作系统的托盘 /*this.addWindowListener(new WindowAdapter() { public void windowIconified(WindowEvent e) { addTrayIcon(); } });*/ addTrayIcon(); this.setVisible(true); } /** * 添加托盘的方法 */ public void addTrayIcon() { try { sysTray.add(trayIcon);// 将托盘添加到操作系统的托盘 setVisible(false); // 使得当前的窗口隐藏 new Thread(this).start(); } catch (AWTException e1) { e1.printStackTrace(); } } /** * 创建系统托盘的对象 步骤: * 1,获得当前操作系统的托盘对象 * 2,创建弹出菜单popupMenu * 3,创建托盘图标icon * 4,创建系统的托盘对象trayIcon */ public void createTrayIcon() { sysTray = SystemTray.getSystemTray();// 获得当前操作系统的托盘对象 icon = new ImageIcon(getRes("com/img/f17.gif"));// 托盘图标 PopupMenu popupMenu = new PopupMenu();// 弹出菜单 MenuItem mi = new MenuItem("打开"); MenuItem exit = new MenuItem("退出"); popupMenu.add(mi); popupMenu.add(exit); // 为弹出菜单项添加事件 mi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ta.setText(ta.getText()+"\n==============================================\n 《通知》 今天下午4:00到大礼堂开会。 \n 第"+times+"次接收时间:"+ new Date().toLocaleString()); // 设置通知消息内容 BickerTray.this.setExtendedState(JFrame.NORMAL); BickerTray.this.setVisible(true); // 显示窗口 BickerTray.this.toFront(); //显示窗口到最前端 flag = false; //消息打开了 count = 0; times++; } }); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); trayIcon = new TrayIcon(icon.getImage(), "消息盒子", popupMenu); /** 添加鼠标监听器,当鼠标在托盘图标上双击时,默认显示窗口 */ trayIcon.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { // 鼠标双击 ta.setText(ta.getText()+"\n==============================================\n 《通知》 今天下午4:00到大礼堂开会。 \n 第"+times+"次接收时间:"+ new Date().toLocaleString()); // 设置通知消息内容 BickerTray.this.setExtendedState(JFrame.NORMAL); BickerTray.this.setVisible(true); // 显示窗口 BickerTray.this.toFront(); flag = false; //消息打开了 count = 0; times++; } } }); } /** * 线程控制闪动 */ public void run() { while (true) { if(flag){ // 有新消息 try { if(count == 1){ // 播放消息提示音 //AudioPlayer p = new AudioPlayer(getRes("file:com/sound/Msg.wav")); //p.play(); p.stop(); try { AudioClip p = Applet.newAudioClip(new URL("file:sound/msg.wav")); p.play(); } catch (MalformedURLException e) { e.printStackTrace(); } } // 闪动消息的空白时间 this.trayIcon.setImage(new ImageIcon("").getImage()); Thread.sleep(500); // 闪动消息的提示图片 this.trayIcon.setImage(icon.getImage()); Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } count++; }else{ // 无消息或是消息已经打开过 this.trayIcon.setImage(icon.getImage()); try { Thread.sleep(20000); flag = true; } catch (InterruptedException e) { e.printStackTrace(); } } } } /** * @param args */ public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); try { UIManager.setLookAndFeel(new SubstanceBusinessBlueSteelLookAndFeel()); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); } SwingUtilities.invokeLater(new Runnable() { public void run() { new BickerTray(); } }); } }
9.JEditorPane使用技巧
此组件使用 EditorKit 的实现来完成其操作。对于给予它的各种内容,它能有效地将其形态变换为适当的文本编辑器种类。该编辑器在任意给定时间的内容类型都由当前已安装的 EditorKit 确定。如果将内容设置为新的 URL,则使用其类型来确定加载该内容所应使用的 EditorKit。
有多种方式可将内容加载到此组件中。
1. 可使用 setText 方法来初始化字符串组件。在这种情况下,将使用当前的 EditorKit,且此类型为期望的内容类型。
2. 可使用 read 方法来初始化 Reader 组件。注意,如果内容类型为 HTML,那么只有使用了 <base> 标记,或者设置了 HTMLDocument 上的 Base 属性时才能解析相关的引用(例如对于类似图像等内容)。在这种情况下,将使用当前的 EditorKit,且此类型为期望的内容类型。
3. 可使用 setPage 方法来初始化 URL 组件。在这种情况下,将根据该 URL 来确定内容类型,并且设置为该内容类型所注册的 EditorKit。
构造函数
JEditorPane()
创建一个新的 JEditorPane。
JEditorPane(String url)
根据包含 URL 规范的字符串创建一个 JEditorPane。
JEditorPane(String type, String text)
创建一个已初始化为给定文件的 JEditorPane。
JEditorPane(URL initialPage)
根据用作输入的指定 URL 创建一个 JEditorPane。
常用方法
addHyperlinkListener(HyperlinkListener
listener)
为了通知所有的更改(例如选中和进入某个链接)而添加一个超链接侦听器。
getContentType()
获得设置此编辑器当前要处理的内容类型。
getEditorKit()
获取用于处理内容的、当前已安装的工具包。
getPage()
获得当前正在显示的 URL。
getPreferredSize()
返回该 JEditorPane 的首选大小。
getText()
根据此编辑器的内容类型返回此 TextComponent 中所包含的文本。
getStream(URL page)
获取给定 URL 的流,该 URL 是将要由 setPage 方法加载的。
scrollToReference(String reference)
将视图滚动到给定的参考位置
- java代码.rar (73.5 KB)
- 下载次数: 14
发表评论
-
onTouchEvent, onClick及onLongClick的调用机制(转载)
2012-09-13 11:08 1490该文属于转载,忘记是哪个作者了,抱歉。 针对屏幕上的一 ... -
计算机中的各种编码(转载)
2011-12-07 14:21 891本文所说的编码,主要 ... -
高效率的使用搜索引擎(转载)
2011-12-07 14:20 1033在网络飞速发展的今天,越来越多的人加入到网络的虚拟世界中,但是 ... -
音频、视频格式大全(转载)
2011-12-06 18:04 996●AVI格式:它的英文全称为Audio Video In ... -
学习Android界面设计的超级利器HierarchyView.bat(转载)
2011-12-01 21:20 3780存在问题: 我看到别人的程序,想学习人家的UI布局是怎么 ... -
Android* 应用性能调试(转载)
2011-12-01 20:43 1018概述 创造愉快用户体验的关键是开发响应快捷的应用。借助 ... -
交互设计需要考虑的一些事(转载)
2011-12-01 20:36 776作为设计师,我们总是希望我们的用户获得更好的体验,试着让 ... -
程序员该如何提高效率(转载)
2011-11-23 10:23 742“拖延症”这个名词近些年很火,似乎每个人都觉得自己的效率不高, ... -
软件设计的23中设计模式(转载)
2011-11-08 14:52 9691、工厂模式:Factory 客户类和工厂类分开。消费者任何时 ... -
时间操作函数总汇(转载)
2011-11-07 18:59 770经常用到时间日期类,所以就将常用的日期方法和属性都归纳总结如下 ... -
免费的Android UI库及组件推荐(转载)
2011-10-14 09:34 1223短短数年时间Android平台就已经形成了一个庞大而活跃的开发 ... -
URL编码问题
2011-08-20 13:42 979在使用java下载文件时,可能会遇到无法识别该地址,有一个原因 ... -
50个jQuery代码段帮你成为更好的JavaScript开发者
2011-08-19 09:55 808今天的帖子会给你们展示50个jquery代码片段,这些 ... -
存放的网站,有时间赶紧分析!
2011-04-26 09:28 745平时浏览时发现以下感兴趣的文章,可能无法即时的分析,所以先记下 ... -
Myeclipse的优化
2011-04-13 10:18 1100myeclipse是比较耗费资源 ... -
Javascript中最常用的55个经典技巧
2011-04-08 14:50 764摘抄别人的文章,挺有用的。看看总是有好处的。 摘抄自 ... -
非本地建立的项目内部没有错误但是项目有个叉叉,部署也报错的解决办法!
2010-12-29 22:03 1099如上图所示! 起因: 项目不是本地建立, ... -
Struts中数据库连接池的配置
2010-12-29 14:35 4080今天帮同学看一个项目,然后第一次碰到数据库是连接时放在str ... -
小问题集合
2010-12-28 23:13 935此文章用于集合一些自己遇到的小问题,也可以供大家 ... -
hibernate有关generator的设置
2010-12-24 21:42 1092今天在弄一个SSH框架的增删改查的简单功能,结果在一个主键设置 ...
评论