JDK6.0發佈有段時間了,新的JDK也有不少新的特性,我去網上搜集了一下,列在下面和大家一起學習.
1.Desktop和SystemTray. 在JDK6中 ,AWT新增加了兩個類:Desktop和SystemTray,前者可以用來打開系統默認瀏覽器瀏覽指定的URL,打開系統默認郵件客戶端給指定的郵箱發郵件,用默認應用程序打開或編輯文件(比如,用記事本打開以txt爲後綴名的文件),用系統默認的打印機打印文檔;後者可以用來在系統托盤區創建一個托盤程序。
我隨便找了幾張圖,在Tray裏面都是空的,沒有圖,可能是圖太大,有xdjm知道希望告訴我.
import java.awt.Desktop;
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.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class DesktopTrayTest ...{
private static Desktop desktop;
private static SystemTray st;
private static PopupMenu pm;
public static void main( String[] args ) ...{
if( Desktop.isDesktopSupported() ) ...{
desktop = Desktop.getDesktop();
}
if( SystemTray.isSupported() ) ...{
st = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().createImage( "http://www.51ppt.com.cn/Article/Uploadphotos/200604/20064147333288.png" );
createPopupMenu();
TrayIcon ti = new TrayIcon( image, "Demo", pm );
try...{
st.add( ti );
} catch( AWTException awte ) ...{
awte.printStackTrace();
}
}
}
public static void sendMail( String mail ) ...{
if( desktop != null &&
desktop.isSupported( Desktop.Action.MAIL ) ) ...{
try ...{
desktop.mail( new URI( mail ) );
} catch (IOException e) ...{
e.printStackTrace();
} catch (URISyntaxException e) ...{
e.printStackTrace();
}
}
}
public static void openBrowser( String url ) ...{
if( desktop != null &&
desktop.isSupported( Desktop.Action.BROWSE )) ...{
try ...{
desktop.browse( new URI( url ) );
} catch (IOException e) ...{
e.printStackTrace();
} catch (URISyntaxException e) ...{
e.printStackTrace();
}
}
}
public static void edit() ...{
if( desktop != null &&
desktop.isSupported( Desktop.Action.EDIT ) ) ...{
File file = new File( "test.txt" );
try ...{
if( file.exists() == false ) ...{
file.createNewFile();
}
desktop.edit( file );
} catch( IOException ioe ) ...{
ioe.printStackTrace();
}
}
}
public static void createPopupMenu() ...{
pm = new PopupMenu();
MenuItem ob = new MenuItem( "Open url" );
ob.addActionListener( new ActionListener() ...{
public void actionPerformed( ActionEvent ae ) ...{
openBrowser( "http://blog.csdn.net/xumingming64398966" );
}
});
MenuItem sm = new MenuItem( "Send Mail" );
sm.addActionListener( new ActionListener() ...{
public void actionPerformed( ActionEvent ae ) ...{
sendMail( "[email protected]" );
}
});
MenuItem ed = new MenuItem( "Edit" );
ed.addActionListener( new ActionListener() ...{
public void actionPerformed( ActionEvent ae ) ...{
edit();
}
});
MenuItem ex = new MenuItem( "Exit" );
ex.addActionListener( new ActionListener() ...{
public void actionPerformed( ActionEvent ae ) ...{
System.exit( 0 );
}
});
pm.add( ob );
pm.add( sm );
pm.add( ed );
pm.addSeparator();
pm.add( ex );
}
}
2.Console. JDK6中提供了java.io.Console類專用來訪問基於字符的控制檯設備. 你的程序如果要與Windows下的cmd或者Linux下的Terminal交互,就可以用Console類代勞. 但我們不總是能得到可用的Console, 一個JVM是否有可用的Console依賴於底層平臺和JVM如何被調用. 如果JVM是在交互式命令行(比如Windows的cmd)中啓動的,並且輸入輸出沒有重定向到另外的地方,那麼就可以得到一個可用的Console實例. 下面代碼演示了Console類的用法:
public class ConsoleTest ...{
public static void main( String[] args ) ...{