JDK1.6.0新特性詳解與代碼示例

JDK6.0發佈有段時間了,新的JDK也有不少新的特性,我去網上搜集了一下,列在下面和大家一起學習.
1.Desktop和SystemTray. 在JDK6中 ,AWT新增加了兩個類:Desktop和SystemTray,前者可以用來打開系統默認瀏覽器瀏覽指定的URL,打開系統默認郵件客戶端給指定的郵箱發郵件,用默認應用程序打開或編輯文件(比如,用記事本打開以txt爲後綴名的文件),用系統默認的打印機打印文檔;後者可以用來在系統托盤區創建一個托盤程序。

我隨便找了幾張圖,在Tray裏面都是空的,沒有圖,可能是圖太大,有xdjm知道希望告訴我.

import java.awt.AWTException;
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類的用法:

import java.io.Console;

public class ConsoleTest ...{
    
public static void main( String[] args ) ...{
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章