锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import java.awt.Dimension;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/*******************************************************************************
聽*
聽* 鍏抽棴鍓嶆彁閱?br />聽*
聽* Author: NeedJava
聽*
聽* Modofied: 2005.04.02
聽*
聽******************************************************************************/
class AlarmBeforeClosed extends JFrame
{
聽 public AlarmBeforeClosed( String title )
聽 {
聽聽聽 //璁劇疆紼嬪簭鏍囬鏍?br />聽聽聽 this.setTitle( title );
聽聽聽 //涓嶇粰鏈澶у寲
聽聽聽 this.setResizable( false );
聽聽聽 //璁劇疆紼嬪簭鐣岄潰澶у皬
聽聽聽 this.setSize( new Dimension( 500, 400 ) );
聽聽聽 //灝嗙▼搴忓眳涓斁緗紙鏂規硶1錛?br />聽聽聽 Dimension paneSize=this.getSize();
聽聽聽 Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
聽聽聽 this.setLocation( ( screenSize.width-paneSize.width )/2, ( screenSize.height-paneSize.height )/2 );
聽聽聽 //灝嗙▼搴忓眳涓斁緗紙鏂規硶2錛?br />聽聽聽 //this.setLocationRelativeTo( null );
聽聽聽 //璁劇疆紼嬪簭鍏抽棴鐨勭被鍨嬶紝闃叉鍏抽棴
聽聽聽 this.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
聽聽聽 //璁劇疆鍏抽棴紼嬪簭
聽聽聽 this.addWindowListener( new WindowAdapter()
聽聽聽 {
聽聽聽聽聽 public void windowClosing( WindowEvent e )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 closeApplication();
聽聽聽聽聽 }
聽聽聽 } );
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 鍏抽棴紼嬪簭
聽聽 *
聽聽 ****************************************************************************/
聽 private void closeApplication()
聽 {
聽聽聽 Toolkit.getDefaultToolkit().beep();
聽聽聽 int answer=JOptionPane.showConfirmDialog( AlarmBeforeClosed.this,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "鎮ㄧ湡鐨勮閫鍑烘緋葷粺錛?,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "閫鍑虹▼搴?,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 JOptionPane.YES_NO_OPTION,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 JOptionPane.QUESTION_MESSAGE,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 null );
聽聽聽 if( answer==JOptionPane.YES_OPTION )聽 //閫夋嫨鈥滄槸鈥?br />聽聽聽聽聽 {
聽聽聽聽聽聽聽 System.exit( 0 );
聽聽聽聽聽 }
聽聽聽 else if( answer==JOptionPane.NO_OPTION )聽 //閫夋嫨鈥滃惁鈥?br />聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 return;
聽聽聽聽聽聽聽聽聽聽 }
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 鍏ュ彛涓葷▼搴?br />聽聽 *
聽聽 ****************************************************************************/
聽 public static void main( String[] args )
聽 {
聽聽聽 new AlarmBeforeClosed( "鍏抽棴鍓嶆彁閱? ).setVisible( true );
聽 }
}
聽聽聽 long temp=0L;
聽聽聽 long begin=0L;
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 //
聽聽聽 // dividend/1024絳夋晥浜巇ividend>>10
聽聽聽 //
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 begin=System.currentTimeMillis();
聽聽聽 for( int i=0; i<10000000; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=dividend/1024;
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+" 鎬誨叡鑰楁椂錛?+( System.currentTimeMillis()-begin )+"姣" );
聽聽聽 begin=System.currentTimeMillis();
聽聽聽 for( int i=0; i<10000000; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=dividend>>10;
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+" 鎬誨叡鑰楁椂錛?+( System.currentTimeMillis()-begin )+"姣\r\n" );
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 //
聽聽聽 // dividend*1024絳夋晥浜巇ividend<<10
聽聽聽 //
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 begin=System.currentTimeMillis();
聽聽聽 for( int i=0; i<10000000; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=dividend*1024;
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+" 鎬誨叡鑰楁椂錛?+( System.currentTimeMillis()-begin )+"姣" );
聽聽聽 begin=System.currentTimeMillis();
聽聽聽 for( int i=0; i<10000000; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=dividend<<10;
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+" 鎬誨叡鑰楁椂錛?+( System.currentTimeMillis()-begin )+"姣\r\n" );
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 //
聽聽聽 // dividend%1024絳夋晥浜巇ividend-( dividend>>10<<10 )
聽聽聽 //
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 begin=System.currentTimeMillis();
聽聽聽 for( int i=0; i<10000000; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=dividend%1024;
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+" 鎬誨叡鑰楁椂錛?+( System.currentTimeMillis()-begin )+"姣" );
聽聽聽 begin=System.currentTimeMillis();
聽聽聽 for( int i=0; i<10000000; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=dividend-( dividend>>10<<10 );
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+" 鎬誨叡鑰楁椂錛?+( System.currentTimeMillis()-begin )+"姣\r\n" );
聽 }
}
聽聽聽 long start=0L;
聽聽聽 String temp=null;
聽聽聽 /*/
聽聽聽 start=System.currentTimeMillis();
聽聽聽 temp=null;
聽聽聽 for( int i=0; i<times; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=times+"";
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+"銆"+( System.currentTimeMillis()-start ) );
聽聽聽 /*/
聽聽聽 start=System.currentTimeMillis();
聽聽聽 temp=null;
聽聽聽 for( int i=0; i<times; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 temp=Long.toString( times );
聽聽聽聽聽聽 }
聽聽聽 System.out.println( temp+"銆"+( System.currentTimeMillis()-start ) );
聽聽聽 //*/
聽 }
}
/*******************************************************************************
聽*
聽*
聽* Author: NeedJava
聽*
聽* Modified: 2007.08.26
聽*
聽******************************************************************************/
public final class ReadFaster
{
聽 /*****************************************************************************
聽聽 *
聽聽 * 鏋勯犲嚱鏁幫紝榛樿浣跨敤褰撳墠璺緞
聽聽 *
聽聽 ****************************************************************************/
聽 public ReadFaster()
聽 {
聽聽聽 this( "." );
聽 }
聽 public ReadFaster( String fileName )
聽 {
聽聽聽 this.listPictures( null, fileName );
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 鍒楀嚭褰撳墠鐩綍涓嬬殑鏂囦歡鍒楄〃錛屽寘鎷枃浠跺拰鏂囦歡澶?br />聽聽 *
聽聽 ****************************************************************************/
聽 private final void listPictures( File path, String fileName )
聽 {
聽聽聽 File file=new File( path, fileName );
聽聽聽 if( file.isDirectory() )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 //寰楀埌褰撳墠鐩綍涓嬬殑鏂囦歡鍒楄〃錛屽寘鎷枃浠跺拰鏂囦歡澶?br />聽聽聽聽聽聽聽 String[] children=file.list();
聽聽聽聽聽聽聽 //濡傛灉瀛愰泦涓虹┖錛屽氨鏀懼純鍚庨潰鐨勬搷浣?br />聽聽聽聽聽聽聽 if( children==null )
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return;
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 //鎺掑簭
聽聽聽聽聽聽聽 //java.util.Arrays.sort( children );
聽聽聽聽聽聽聽 //濡傛灉瀛愰泦涓嶄負絀猴紝鍒欐樉紺?br />聽聽聽聽聽聽聽 for( int i=0; i<children.length; i++ )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 listPictures( file, children[i] );
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽 }
聽聽聽 else if( file.isFile() )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 if( isPictureSuffix( file.getPath() ) )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 readPicture( file );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽 }
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 鏍規嵁鍚庣紑鍚嶅垽鏂槸鍚︽槸鏈夋晥鐨勫浘鐗囷紝騫朵笖榪斿洖灝忓啓鐨勫悗緙鍚?br />聽聽 *
聽聽 ****************************************************************************/
聽 private final boolean isPictureSuffix( String fileName )
聽 {
聽聽聽 if( fileName==null )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 return false;
聽聽聽聽聽 }
聽聽聽 int length=fileName.length();
聽聽聽 //鍙兘瀛樺湪鈥?jpg鈥濊繖鏍風殑鏂囦歡錛屽嵆4涓瓧絎?br />聽聽聽 if( length>=4 )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 char c=fileName.charAt( length-4 );
聽聽聽聽聽聽聽 if( c=='.' )
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-3 );
聽聽聽聽聽聽聽聽聽聽聽 if( c=='j'||c=='J' )
聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-2 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='p'||c=='P' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-1 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='g'||c=='G' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else if( c=='e'||c=='E' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 else if( c=='t'||c=='T' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-2 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='i'||c=='I' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-1 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='f'||c=='F' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else if( c=='j'||c=='J' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-3 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='p'||c=='P' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-2 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='e'||c=='E' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-1 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='g'||c=='G' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else if( c=='f'||c=='F' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-2 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='i'||c=='I' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-1 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='f'||c=='F' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else if( c=='t'||c=='T' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-3 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='i'||c=='I' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-2 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='f'||c=='F' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 c=fileName.charAt( length-1 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( c=='f'||c=='F' )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽 }
聽聽聽 return false;
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 澶т簬10240鐨勶紝姣忔璇?024鎴?048
聽聽 *
聽聽 * 灝忎簬10240鐨勶紝璇?0240涓嬈″嵆鍙?br />聽聽 *
聽聽 ****************************************************************************/
聽 private final String readPicture( File file )
聽 {
聽聽聽 try{ FileInputStream fis=new FileInputStream( file );
聽聽聽聽聽聽聽聽 //灝忎簬10K鐨勫拷鐣?br />聽聽聽聽聽聽聽聽 if( fis.available()<10240 )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 return "";
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 long num=0L;
聽聽聽聽聽聽聽聽 //Buffered鐨勯粯璁ゆ湁2048鍜?192
聽聽聽聽聽聽聽聽 //*/ No.1
聽聽聽聽聽聽聽聽 byte[] buffer=new byte[10240];
聽聽聽聽聽聽聽聽 if( fis.read( buffer )==10240 )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 for( int i=0; i<10240; i++ )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 num++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 //*/
聽聽聽聽聽聽聽聽 /*/ No.3
聽聽聽聽聽聽聽聽 byte[] buffer=new byte[5120];
聽聽聽聽聽聽聽聽 for( int j=0; j<2; j++ )
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽 if( fis.read( buffer )==5120 )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for( int i=0; i<5120; i++ )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 num++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 //*/
聽聽聽聽聽聽聽聽 /*/ No.2
聽聽聽聽聽聽聽聽 byte[] buffer=new byte[2048];
聽聽聽聽聽聽聽聽 for( int j=0; j<5; j++ )
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽 if( fis.read( buffer )==2048 )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for( int i=0; i<2048; i++ )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 num++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 //*/
聽聽聽聽聽聽聽聽 /*/ No.4
聽聽聽聽聽聽聽聽 byte[] buffer=new byte[1024];
聽聽聽聽聽聽聽聽 for( int j=0; j<10; j++ )
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽 if( fis.read( buffer )==1024 )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for( int i=0; i<1024; i++ )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 num++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 //*/
聽聽聽聽聽聽聽聽 fis.close();
聽聽聽聽聽聽 }
聽聽聽聽 catch( FileNotFoundException fnfe )
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 fnfe.printStackTrace();
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽 catch( IOException ioe )
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 ioe.printStackTrace();
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽 catch( Exception e )
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 e.printStackTrace();
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽 return "";
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 涓誨嚱鏁板叆鍙?br />聽聽 *
聽聽 ****************************************************************************/
聽 public static void main( String[] args )
聽 {
聽聽聽 try{ long begin=System.currentTimeMillis();
聽聽聽聽聽聽聽聽 ReadFaster rf=new ReadFaster();
聽聽聽聽聽聽聽聽 System.out.println( "鎬誨叡鑰楁椂錛?+( System.currentTimeMillis()-begin )+"姣\r\n" );
聽聽聽聽聽聽 }
聽聽聽 catch( Exception e )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 e.printStackTrace();
聽聽聽聽聽聽聽聽 }
聽 }
}
聽聽聽 int length=12;
聽聽聽 String temp="12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890";
聽聽聽 int times=10000000;聽 //鍗冧竾
聽聽聽 /*/
聽聽聽 int begin=100;
聽聽聽 int length=120;
聽聽聽 String temp="12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"榛戝甯濆浗蹇嶈呯榫熷彉褰㈤噾鍒?
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"12345678901234567890";
聽聽聽 int times=1000000;聽 //鐧句竾
聽聽聽 //*/
聽聽聽 char[] oldArray=temp.toCharArray();
聽聽聽 char[] newArray=null;
聽聽聽 long start=0L;
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 //
聽聽聽 // 鍗曠函璧嬪?br />聽聽聽 //
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 newArray=new char[length];
聽聽聽 start=System.currentTimeMillis();
聽聽聽 for( int i=0; i<times; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 for( int j=0; j<length; j++ )
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽 newArray[j]=oldArray[begin+j];
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽 }
聽聽聽 System.out.println( new String( newArray )+"銆"+( System.currentTimeMillis()-start ) );
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 //
聽聽聽 // System.arraycopy
聽聽聽 //
聽聽聽 ////////////////////////////////////////////////////////////////////////////
聽聽聽 newArray=new char[length];
聽聽聽 start=System.currentTimeMillis();
聽聽聽 for( int i=0; i<times; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 System.arraycopy( oldArray, begin, newArray, 0, length );
聽聽聽聽聽聽 }
聽聽聽 System.out.println( new String( newArray )+"銆"+( System.currentTimeMillis()-start ) );
聽 }
}
/*******************************************************************************
聽*
聽* 瀵規暟瀛楁垨鏂囦歡鍚嶆帓鍒?br />聽*
聽* 娌℃湁鑰冭檻姹夊瓧鏄劇ず鏃跺崰涓や釜浣嶇疆鐨勬儏鍐碉紝鍗沖鏂囦歡鍚嶅鐞嗕笉澶ソ
聽*
聽* Author: NeedJava
聽*
聽* Modified: 2007.09.09
聽*
聽******************************************************************************/
public final class DotAlign
{
聽 private DotAlign(){}
聽 private static final String align( String string,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽char prefix,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 char suffix,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽int prefixLength,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int suffixLength,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽boolean isNumber )
聽 {
聽聽聽 if( string==null||string.equals( "" )||string.equals( "." )||prefixLength<0||suffixLength<0 )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 return string;
聽聽聽聽聽 }
聽聽聽 //濡傛灉娌℃湁灝忔暟錛岄偅涔堟寜鐓у父鐞嗭紝灝忔暟鐐逛篃搴旇鐪佺暐
聽聽聽 char[] buffer=new char[( suffixLength>0 ? prefixLength+1+suffixLength : prefixLength )];
聽聽聽 int stringLength=string.length();
聽聽聽 int dot=stringLength-1;
聽聽聽 //鎵懼埌灝忔暟鐐逛綅緗紝鍙互鐢╨astIndexOf()浠f浛
聽聽聽 while( dot>-1 )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 if( string.charAt( dot-- )=='.' )
聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 dot++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 break;
聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 }
聽聽聽 //System.out.print( Integer.toString( dot )+"\t" );
聽聽聽 //鈽呮暣鏁伴儴鍒嗭紝浠庡皬鏁扮偣宸︿綅鍚戝乏縐?br />聽聽聽 int pointer=( dot>-1 ? dot-1 : stringLength-1 );
聽聽聽 for( int i=prefixLength-1; i>-1; i-- )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 if( pointer>-1 )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 buffer[i]=string.charAt( pointer-- );
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 else{ buffer[i]=prefix;
聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽 }
聽聽聽 //濡傛灉娌℃湁灝忔暟閮ㄥ垎錛岄偅涔堟寜鐓у父鐞嗭紝灝忔暟鐐瑰簲璇ョ渷鐣?br />聽聽聽 if( suffixLength>0 )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 //鈽呭皬鏁扮偣
聽聽聽聽聽聽聽 buffer[prefixLength]=( dot>-1||isNumber ? '.' : suffix );
聽聽聽聽聽聽聽 //鈽呭皬鏁伴儴鍒嗭紝浠庡皬鏁扮偣鍙充綅鍚戝彸縐?br />聽聽聽聽聽聽聽 pointer=( dot>-1 ? dot+1 : stringLength );
聽聽聽聽聽聽聽 for( int i=prefixLength+1; i<buffer.length; i++ )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 if( pointer<stringLength )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buffer[i]=string.charAt( pointer++ );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽 else{ buffer[i]=suffix;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽 }
聽聽聽 return new String( buffer );
聽 }
聽 public final static void main( String[] args )
聽 {
聽聽聽 System.out.println( "\r\n-------------------------------------------\r\n" );
聽聽聽 String[] number={ "",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".5",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".56",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".567",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".5678",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.5",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.56",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.567",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.5678" };
聽聽聽 for( int i=0; i<number.length; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 System.out.println( "["+DotAlign.align( number[i], ' ', '0', 7, 2, true )+"]聽聽 ["+number[i]+"]" );
聽聽聽聽聽聽 }
聽聽聽 System.out.println( "\r\n-------------------------------------------\r\n" );
聽聽聽 String[] file={ "",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".j",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".jp",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".jpe",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ".jpeg",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.j",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.jp",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.jpe",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 "1234.jpeg" };
聽聽聽 for( int i=0; i<file.length; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 System.out.println( "["+DotAlign.align( file[i], ' ', ' ', 7, 5, false )+"]聽聽 ["+file[i]+"]" );
聽聽聽聽聽聽 }
聽聽聽 System.out.println( "\r\n-------------------------------------------\r\n" );
聽 }
}
鏍規嵁 RSSOwlLoader.java 涓殑
[code]
private static void startupProcess( String[] args )
{
聽 ...
聽 if( !System.getProperties().containsKey( PROPERTY_ALLOW_MULTI_INSTANCES )&&StartupManager.isRSSOwlRunning( feedArgument ) )
聽 ...
}
[/code]
榪借釜鍒?StartupManager.java 瑙佷笅錛?/font>
榪借釜鍒?StartupManager.isRSSOwlRunning( String message ) 鐢ㄩ斾負寤虹珛ServerSocket錛岀洃鍚湰鍦?794绔彛
[code]
static ServerSocket applLockSocket;
public static boolean isRSSOwlRunning( String message )
{
聽 try{ applLockSocket=new ServerSocket( 8794, 50, InetAddress.getByName( "127.0.0.1" ) );聽 //1987騫?鏈?鏃ュ嚭鐢燂紵
聽聽聽聽聽聽 handleSocketUnBound();聽 //
聽聽聽聽聽聽 return false;
聽聽聽聽 }
聽 catch( java.net.BindException e )聽聽聽 //Another instance already running
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 ...
聽聽聽聽聽聽聽聽 handleSocketBound( message );聽 //
聽聽聽聽聽聽聽聽 return true;
聽聽聽聽聽聽 }聽
聽 catch( IOException e )聽 //Other Error
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 ...
聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽 }
}
[/code]
榪借釜鍒?StartupManager.handleSocketUnBound() 鍜?StartupManager.handleSocketBound( String message )
[code]
private static void handleSocketBound( String message )
{
聽 Socket socket;
聽 try{ socket=new Socket( InetAddress.getByName( "127.0.0.1" ), 8794 );
聽聽聽聽聽聽 PrintWriter writer=new PrintWriter( new OutputStreamWriter( socket.getOutputStream() ) );
聽聽聽聽聽聽 writer.println( ( message!=null&&message.length()>0 ) ? message : DEFAULT_MESSAGE );
聽聽聽聽聽聽 writer.flush();
聽聽聽聽 }
聽 catch( UnknownHostException e )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 ...
聽聽聽聽聽聽 }
聽 catch( IOException e )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 ...
聽聽聽聽聽聽 }
}
[/code]
[code]
/**
聽* Server not yet running. Start it and listen for incoming messages.
聽*/
private static void handleSocketUnBound()
{
聽 listen();聽 //杞悜錛屼負浜嗗縐板ソ鐪嬶紵榪樻槸涓轟簡鍏煎錛?br />}
/**
聽* Listen for incoming messages.鐪嬬湅鎺ュ彈鐨勮繛鎺ュ彂閫佷簡浠涔堝唴瀹?br />聽*/
private static void listen()
{
聽 //Run the Server inside a Thread
聽 server=new ExtendedThread()聽 //extends from Thread
聽 {
聽聽聽 public void run()
聽聽聽 {
聽聽聽聽聽 while( !isStopped()&&!isInterrupted() )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 BufferedReader buffReader=null;
聽聽聽聽聽聽聽聽聽聽聽聽 try{ //Read a single line from the Socket
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Socket socket=applLockSocket.accept();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 buffReader=new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 final String message=buffReader.readLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 socket.close();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //Check the received message
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( ( message!=null&&message.length()>0 )&&GUI.display!=null&&!GUI.display.isDisposed() )聽 //嬋媧繪煇涓狦UI鐨勪唬鐮佸湪姝わ紝鎴戜滑榪涘幓鐪嬬湅
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 GUI.display.asyncExec( new Runnable()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 public void run()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //Restore the RSSOwl Window and handle Message
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( GUI.isAlive() )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 GUI.rssOwlGui.restoreWindow();聽 //鎵懼埌浜嗭紝杞埌GUI.java
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //Handle the message as Link if valid argument
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( RSSOwlLoader.isValidArgument( message ) )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 GUI.rssOwlGui.getEventManager().actionHandleSuppliedLink( message );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 } );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽 catch( IOException e )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ...
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽 finally{ //鍏抽棴嫻?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽 }
聽 };
聽 server.setDaemon( true );
聽 server.setName( "Startup Manager Thread" );
聽 server.start();
}
[/code]
榪借釜鍒?GUI.java 瑙佷笅錛?/font>
榪借釜鍒癎UI.restoreWindow()
[code]
/**
聽* Restore the application window either from taskbar or the tray.
聽*/
public void restoreWindow()
{
聽 //RSSOwl is minimized to Tray
聽 if( GlobalSettings.useSystemTray()&&rssOwlSystray!=null&&rssOwlSystray.isMinimizedToTray() )
聽聽聽 {
聽聽聽聽聽 rssOwlSystray.restoreWindow();
聽聽聽 }
聽 else{ //RSSOwl is not active
聽聽聽聽聽聽聽 shell.forceActive();聽 //灝辨槸瀹冧簡
聽聽聽聽聽聽聽 shell.setMinimized( false );
聽聽聽聽聽 }
}
[/code]
鍘熺悊濡備笅錛?
鍦ㄦ湰鍦?794绔彛寤虹珛鏈嶅姟鐩戝惉錛屽茍涓斾竴鐩寸洃鍚绔彛錛岃瘯鍥炬帴鍙楁绔彛鍏跺畠瀹炰緥錛堝叾瀹冪▼搴忥紵錛夊彂閫佺殑杈撳叆
濡傛灉璇誨埌鏁版嵁錛堝ソ鍍忔病鏈夊垽鏂暟鎹殑鍚堟硶鎬э紝浠呬粎鍒ゆ柇鏁版嵁涓嶄負絀猴級錛屽茍涓旇嚜宸變笉鏄滄縺媧燴濈姸鎬侊紝灝扁滄縺媧燴濊嚜宸憋紱
濡傛灉寤虹珛鏈嶅姟鐩戝惉涓嶆垚鍔燂紝璇存槑宸茬粡鏈夊疄渚嬶紙鍏跺畠紼嬪簭錛燂級鍗犵敤姝ょ鍙d簡錛屽悜姝ょ鍙e彂閫佹暟鎹敜閱掑墠涓涓疄渚嬶紝鍋滃嚑縐掍互渚垮墠涓涓疄渚嬫帴鍙楋紝鐒跺悗閫鍑恒?
紼嬪簭鐢ㄧ殑鏄疭WT錛屾縺媧繪柟娉曠敤鐨勬槸shell.forceActive()錛宐ut it's not good for core java.
浠ヤ笂鍒嗘瀽濡傛湁涓嶅錛屾伋璇鋒枾姝c?/font>
聽
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import javax.swing.JFrame;
/*******************************************************************************
聽*
聽* 鍙繍琛屼竴涓疄渚?br />聽*
聽* Just single instance
聽*
聽*
聽* Author: NeedJava
聽*
聽* Modified: 2007.08.29
聽*
聽*
聽* 浣犲彲浠ヤ嬌鐢ㄦ紼嬪簭浜庝換浣曞湴鏂癸紝浣嗚淇濈暀紼嬪簭浣滆呭強娉ㄩ噴鐨勫畬鏁淬傚鏋滀綘鏀硅繘浜嗙▼搴忥紝
聽*
聽* 璇峰湪鍘熶綔鑰呭悗娣誨姞濮撳悕錛屽錛欰uthor: NeedJava/Jack/Mike錛岀増鏈強淇敼鏃墮棿鍚岀悊銆?br />聽*
聽******************************************************************************/
public final class SingleInstance
{
聽 /*****************************************************************************
聽聽 *
聽聽 * 鏋勯犲嚱鏁?br />聽聽 *
聽聽 ****************************************************************************/
聽 private SingleInstance()
聽 {
聽聽聽 this( "vab", ".vab", "vab" );
聽 }
聽 public SingleInstance( String filePrefixName, String fileSuffixName, String directoryName )
聽 {
聽聽聽 this.init( filePrefixName, fileSuffixName, directoryName );
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 鍘熺悊錛?br />聽聽 *
聽聽 * 鐢ㄩ噸瀹氬悜灝嗘爣鍑嗛敊璇緭鍑烘祦瀹氬悜鍒頒竴涓棩蹇楁枃浠訛紝鍗犵敤瀹冿紝浣垮叾涓嶈兘琚垹闄?br />聽聽 *
聽聽 * 浠ュ悗鐨勫疄渚嬭瘯鍥懼皢瀛樺湪鐨勬鏃ュ織鏂囦歡鏀瑰悕騫朵笖鍙﹀瓨涓烘煇涓枃浠跺す涓?br />聽聽 *
聽聽 * 濡傛灉鎴愬姛錛岃鏄庢病鏈夌▼搴忓崰鐢ㄥ畠錛堜笉鎺掗櫎浣犲湪鐢ㄥ畠錛岀己闄鳳紵錛夛紝姝eソ淇濆瓨鏃ュ織
聽聽 *
聽聽 * 濡傛灉涓嶆垚鍔燂紝閫鍑恒乺enameTo鍛戒護鏈変竴綆弻闆曠殑浣滅敤
聽聽 *
聽聽 ****************************************************************************/
聽 private final void init( String filePrefixName, String fileSuffixName, String directoryName )
聽 {
聽聽聽 if( filePrefixName==null||fileSuffixName==null||directoryName==null )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 exitWithWarning( "Error: Invalid file name.", 10 );
聽聽聽聽聽 }
聽聽聽 //We need check the fileSuffixName here? From the tail?
聽聽聽 String fileName=filePrefixName+fileSuffixName;
聽聽聽 try{ File error=new File( fileName );
聽聽聽聽聽聽聽聽 if( error.exists() )
聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 File directory=new File( directoryName );
聽聽聽聽聽聽聽聽聽聽聽聽 String newFileName=directoryName+File.separator+convertMillisecond2DateTime( error.lastModified() )+fileSuffixName;
聽聽聽聽聽聽聽聽聽聽聽聽 //System.out.println( newFileName );
聽聽聽聽聽聽聽聽聽聽聽聽 if( directory.exists() )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( directory.isDirectory() )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //renameTo涔熸槸濂戒笢涓滐紝鏃㈠彲浠ユ敼鍚嶏紝榪樺彲浠ョЩ鏂囦歡
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( !error.renameTo( new File( newFileName ) ) )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 exitWithWarning( "Error: The instance already exists, I will exit.", 11 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else{ exitWithWarning( "Error: The \'"+directoryName+"\' is not a valid directory.", 21 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽 else{ if( directory.mkdirs() )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //renameTo涔熸槸濂戒笢涓滐紝鏃㈠彲浠ユ敼鍚嶏紝榪樺彲浠ョЩ鏂囦歡
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( !error.renameTo( new File( newFileName ) ) )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 exitWithWarning( "Error: The instance already exists, I will exit.", 11 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else{ exitWithWarning( "Error: Failed to create the \'"+directoryName+"\' directory.", 22 );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 //閲嶅畾鍚戞爣鍑嗛敊璇緭鍑烘祦錛屾墍鏈夊姛鑳藉叏闈犲畠銆傛潵錛屽暤涓涓?br />聽聽聽聽聽聽聽聽 System.setErr( new PrintStream( new FileOutputStream( fileName ) ) );
聽聽聽聽聽聽 }
聽聽聽 catch( FileNotFoundException fnfe )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 //fnfe.printStackTrace();
聽聽聽聽聽聽聽聽聽聽 exitWithWarning( fnfe.toString(), 23 );
聽聽聽聽聽聽聽聽 }
聽聽聽 catch( IOException ioe )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 //ioe.printStackTrace();
聽聽聽聽聽聽聽聽聽聽 exitWithWarning( ioe.toString(), 29 );
聽聽聽聽聽聽聽聽 }
聽聽聽 catch( Exception e )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 //e.printStackTrace();
聽聽聽聽聽聽聽聽聽聽 exitWithWarning( e.toString(), 99 );
聽聽聽聽聽聽聽聽 }
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * You can change the milliseconds to the date and time string here
聽聽 *
聽聽 * I just return the original
聽聽 *
聽聽 * Don't get the same string :)
聽聽 *
聽聽 ****************************************************************************/
聽 private final String convertMillisecond2DateTime( long millisecond )
聽 {
聽聽聽 return ""+millisecond;
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * Return the warning and the exit code, then exit the application
聽聽 *
聽聽 ****************************************************************************/
聽 private final void exitWithWarning( String warning, int code )
聽 {
聽聽聽 System.out.println( warning==null ? "" : warning );
聽聽聽 System.exit( code );
聽 }
聽 /*****************************************************************************
聽聽 *
聽聽 * 涓誨嚱鏁板叆鍙?br />聽聽 *
聽聽 ****************************************************************************/
聽 public final static void main( String[] args )
聽 {
聽聽聽 SingleInstance si=new SingleInstance( "error", ".txt", "error" );
聽聽聽 final JFrame frame=new JFrame( "Just single instance. By NeedJava. 2007.08.29" );
聽聽聽 //I stay here, to make some friends happy.
聽聽聽 frame.addWindowListener( new WindowAdapter()
聽聽聽 {
聽聽聽聽聽 public void windowClosing( WindowEvent we )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 frame.dispose();
聽聽聽聽聽聽聽 System.exit( 0 );
聽聽聽聽聽 }
聽聽聽 } );
聽聽聽 frame.setBounds( 200, 200, 700, 70 );
聽聽聽 frame.setVisible( true );
聽 }
}
import java.util.ArrayList;
import java.util.Enumeration;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JComboBox;
import javax.swing.UIManager;
import javax.swing.JSplitPane;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
/*********************************************************************
聽*
聽*
聽* TableChooser.java
聽*
聽* Last modified: 2005-04-26
聽*
聽* Author: NeedJava
聽*
聽* E-Mail:
needjava@126.com
聽*
聽* Address: HeFei-AnHui-China
聽*
聽* Bug: 濡傛灉閫変腑琛屽ご鎷栧姩錛屼細鍙戠幇琛ㄤ綋涓嶄細璺熺潃鎷栧姩錛岄櫎闈炰綘鎷栧姩琛ㄤ綋
聽*
聽* If you fixed this bug, please let us know, Thanks a lot.
聽*
聽*
聽*********************************************************************/
class TableChooser extends JFrame
{
聽 private final boolean horizontal;
聽 private String[] tableTitle;
聽 private ArrayList primaryBody;
聽 private ArrayList prepareBody;
聽 private ArrayList selectBody;
聽 private ShowTableModel prepareModel;
聽 private ShowTableModel selectModel;
聽 private final RowHeaderModel prepareRowHeaderModel;
聽 private final RowHeaderModel selectRowHeaderModel;
聽 private final JTable prepareTable;
聽 private final JTable selectTable;
聽 private final JTable prepareRowHeaderTable;
聽 private final JTable selectRowHeaderTable;
聽 private final static int rowHeight=18;
聽 private final JScrollPane prepareTableJSP;
聽 private final JScrollPane selectTableJSP;
聽 private final JPanel prepareTablePanel;
聽 private final JPanel selectTablePanel;
聽 private final JSplitPane splitPane;
聽 /**
聽聽 *
聽聽 * 鏋勯犲嚱鏁?br />聽聽 *
聽聽 */
聽 public TableChooser( boolean horizontal )
聽 {
聽聽聽 this.horizontal=horizontal;
聽聽聽 //璁劇疆紼嬪簭鏍囬鏍?br />聽聽聽 this.setTitle( "閫夋嫨妗? );
聽聽聽 //涓嶇粰鏈澶у寲
聽聽聽 //this.setResizable( false );
聽聽聽 //璁劇疆紼嬪簭鐣岄潰澶у皬
聽聽聽 this.setSize( new Dimension( 500, 400 ) );
聽聽聽 //灝嗙▼搴忓眳涓斁緗紙鏂規硶1錛?br />聽聽聽 Dimension paneSize=this.getSize();
聽聽聽 Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
聽聽聽 this.setLocation( ( screenSize.width-paneSize.width )/2, ( screenSize.height-paneSize.height )/2 );
聽聽聽 //灝嗙▼搴忓眳涓斁緗紙鏂規硶2錛?br />聽聽聽 //this.setLocationRelativeTo( null );
聽聽聽 //璁劇疆紼嬪簭鍏抽棴鐨勭被鍨嬶紝闃叉鍏抽棴
聽聽聽 this.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
聽聽聽 //璁劇疆鍏抽棴紼嬪簭
聽聽聽 this.addWindowListener( new WindowAdapter()
聽聽聽 {
聽聽聽聽聽 public void windowClosing( WindowEvent e )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 closeApplication();
聽聽聽聽聽 }
聽聽聽 } );
聽
聽聽聽 //////////////////////////////
聽聽聽 prepareTable=new JTable();
聽聽聽 selectTable=new JTable();
聽聽聽 //涓哄緟閫夈佸凡閫夎〃鏍艱緗璁劇殑緇樺埗鍣?br />聽聽聽 ShowTableRenderer ShowTableRenderer=new ShowTableRenderer();
聽聽聽 prepareTable.setDefaultRenderer( Object.class, ShowTableRenderer );
聽聽聽 selectTable.setDefaultRenderer( Object.class, ShowTableRenderer );
聽聽聽 //璁劇疆鏄惁鍙互鎷栧姩琛ㄥご
聽聽聽 prepareTable.getTableHeader().setReorderingAllowed( false );
聽聽聽 selectTable.getTableHeader().setReorderingAllowed( false );
聽聽聽 //璁劇疆琛岄珮
聽聽聽 prepareTable.setRowHeight( rowHeight );
聽聽聽 selectTable.setRowHeight( rowHeight );
聽
聽聽聽 //////////////////////////////
聽聽聽 prepareRowHeaderModel=new RowHeaderModel( 0, 1 );
聽聽聽 selectRowHeaderModel=new RowHeaderModel( 0, 1 );
聽聽聽 prepareRowHeaderTable=new JTable( prepareRowHeaderModel );
聽聽聽 selectRowHeaderTable=new JTable( selectRowHeaderModel );
聽聽聽 //涓簉owHeaderTable璁劇疆棰勮鐨勭粯鍒跺櫒
聽聽聽 prepareRowHeaderTable.setDefaultRenderer( Object.class, new RowHeaderRenderer( prepareTable ) );
聽聽聽 selectRowHeaderTable.setDefaultRenderer( Object.class, new RowHeaderRenderer( selectTable ) );
聽聽聽 //灝唕owHeaderTable鍥哄畾瀹藉害
聽聽聽 prepareRowHeaderTable.setPreferredScrollableViewportSize( new Dimension( 50, 0 ) );
聽聽聽 selectRowHeaderTable.setPreferredScrollableViewportSize( new Dimension( 50, 0 ) );
聽聽聽 //璁劇疆琛岄珮
聽聽聽 prepareRowHeaderTable.setRowHeight( rowHeight );
聽聽聽 selectRowHeaderTable.setRowHeight( rowHeight );
聽聽聽 //闃叉鍗曞厓鏍兼湁緙濋殭
聽聽聽 prepareRowHeaderTable.setIntercellSpacing( new Dimension( 0, 0 ) );
聽聽聽 selectRowHeaderTable.setIntercellSpacing( new Dimension( 0, 0 ) );
聽聽聽 //鍏辯敤鍚屼竴涓狶istSelectionModel錛屼嬌涓よ竟鐨勬煇琛屽悓鏃墮変腑
聽聽聽 prepareRowHeaderTable.setSelectionModel( prepareTable.getSelectionModel() );
聽聽聽 selectRowHeaderTable.setSelectionModel( selectTable.getSelectionModel() );
聽
聽聽聽 //////////////////////////////
聽聽聽 prepareTableJSP=new JScrollPane( prepareTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
聽聽聽 selectTableJSP=new JScrollPane( selectTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
聽聽聽 //灝唕owHeaderTable浣滀負row header鍔犲叆JScrollPane鐨凴owHeaderView鍖哄煙
聽聽聽 prepareTableJSP.setRowHeaderView( prepareRowHeaderTable );
聽聽聽 selectTableJSP.setRowHeaderView( selectRowHeaderTable );
聽聽聽 //宸︿笂瑙掍慨楗?br />聽聽聽 prepareTableJSP.setCorner( JScrollPane.UPPER_LEFT_CORNER, new RowHeaderCorner( prepareTable, "鍏ㄩ? ) );
聽聽聽 selectTableJSP.setCorner( JScrollPane.UPPER_LEFT_CORNER, new RowHeaderCorner( selectTable, "鍏ㄩ? ) );
聽
聽聽聽 //////////////////////////////
聽聽聽 prepareTablePanel=new JPanel();
聽聽聽 selectTablePanel=new JPanel();
聽聽聽 prepareTablePanel.setLayout( new BorderLayout() );
聽聽聽 selectTablePanel.setLayout( new BorderLayout() );
聽聽聽 prepareTablePanel.add( prepareTableJSP, BorderLayout.CENTER );
聽聽聽 selectTablePanel.add( selectTableJSP, BorderLayout.CENTER );
聽聽聽 prepareTablePanel.setBorder( new TitledBorder( new EtchedBorder( EtchedBorder.LOWERED ), "寰呴変漢鍛? ) );
聽聽聽 selectTablePanel.setBorder( new TitledBorder( new EtchedBorder( EtchedBorder.LOWERED ), "宸查変漢鍛? ) );
聽聽聽 //鑷沖皯鏄劇ず6琛?br />聽聽聽 prepareTablePanel.setMinimumSize( new Dimension( 200, 150 ) );
聽聽聽 selectTablePanel.setMinimumSize( new Dimension( 200, 150 ) );
聽
聽聽聽 //////////////////////////////
聽聽聽 if( horizontal )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 splitPane=new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, prepareTablePanel, selectTablePanel );
聽聽聽聽聽 }
聽聽聽 else{ splitPane=new JSplitPane( JSplitPane.VERTICAL_SPLIT, prepareTablePanel, selectTablePanel );
聽聽聽聽聽聽聽 }
聽聽聽 //鎷栧姩鏃舵樉紺虹獥鍙o紝鍚﹀垯鍙樉紺烘嫋鍔ㄧ殑杈規
聽聽聽 splitPane.setContinuousLayout( true );
聽聽聽 //鍙互鐐逛笁瑙掑艦鍥炬爣鍙樉紺轟竴涓尯鍩?br />聽聽聽 splitPane.setOneTouchExpandable( true );
聽聽聽 splitPane.setDividerLocation( 210 );
聽聽聽 //鏀懼ソ涓昏闈㈡澘
聽聽聽 this.getContentPane().add( splitPane, BorderLayout.CENTER );
聽聽聽 getTableModel();
聽 }
聽
聽 /**
聽聽 *
聽聽 * 寰楀埌鍘熷鐨凾ableModel
聽聽 *
聽聽 */
聽 private final void getTableModel()
聽 {
聽聽聽 tableTitle=new String[]{ "鏄惁閫夋嫨", "鏍囧彿" };
聽聽聽 primaryBody=new ArrayList();
聽聽聽 prepareBody=new ArrayList();
聽聽聽 selectBody=new ArrayList();
聽聽聽 for( int i=1; i<21; i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 Object[] row=new Object[2];
聽聽聽聽聽聽聽聽 row[0]=Boolean.FALSE;聽 //絎竴鍒椾負鍒ゆ柇鐢ㄧ殑甯冨皵鍊鹼紝涔熷彲new Boolean( false )
聽聽聽聽聽聽聽聽 row[1]=new Double( i );
聽聽聽聽聽聽聽聽 primaryBody.add( row );聽 //涓琛屾悶濂藉悗錛屽鍔犺繘ArrayList涓?br />聽聽聽聽聽聽聽聽 prepareBody.add( row );聽 //灝嗗緟閫夊唴瀹瑰垵濮嬩負鍘熷琛ㄦ牸
聽聽聽聽聽聽 }
聽聽聽 ////////////////////////////////////////////////////////////////////////
聽聽聽 //
聽聽聽 // 灝嗘暟鎹牴鎹渶姹傚垏鍒?br />聽聽聽 //
聽聽聽 ////////////////////////////////////////////////////////////////////////
聽聽聽 prepareModel=new ShowTableModel( prepareBody, tableTitle )
聽聽聽 {
聽聽聽聽聽 public void setValueAt( Object value, int row, int col )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 super.setValueAt( value, row, col );聽 //闇瑕佽鐖舵潵璧嬪?/font>
聽聽聽聽聽聽聽 Object rowObj = prepareBody.get( row );聽聽聽聽聽聽聽 //寰楀埌涓昏〃鐨勯偅琛屽唴瀹?br />聽聽聽聽聽聽聽 int whichRow聽 = selectBody.indexOf( rowObj );聽 //鏌ユ壘嬈¤〃鏈夋病鏈夌浉鍚岀殑閭h璁板綍
聽聽聽聽聽聽聽 if( this.getValueAt( row, col ).equals( Boolean.TRUE ) )聽 //濡傛灉姝よ璁板綍鐨勯鍒楀唴瀹逛負閫夋嫨
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 if( whichRow<0 )聽 //闃叉嬈¤〃澶氭澧炲姞閭h鍐呭
聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 selectBody.add( rowObj );
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else{ if( whichRow>=0 )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 selectBody.remove( whichRow );聽 //濡傛灉棣栧垪涓哄彇娑堥夋嫨錛岄偅涔堟琛ㄥ垹闄ら偅琛岃褰?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 this.fireTableDataChanged();聽聽聽聽聽聽聽聽 //閫氬憡涓昏〃緇撴瀯鍙樺寲
聽聽聽聽聽聽聽 selectModel.fireTableDataChanged();聽 //閫氬憡嬈¤〃緇撴瀯鍙樺寲
聽聽聽聽聽聽聽 selectRowHeaderModel.setRowCount( selectBody.size() );聽 //璁╂琛ㄨ澶磋窡鐫嬈¤〃琛屾暟鍙樺寲
聽聽聽聽聽 }
聽聽聽 };
聽聽聽 prepareTable.setModel( prepareModel );
聽聽聽 selectModel=new ShowTableModel( selectBody, tableTitle )
聽聽聽 {
聽聽聽聽聽 public void setValueAt( Object value, int row, int col )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 super.setValueAt( value, row, col );聽 //闇瑕佽鐖舵潵璧嬪?/font>
聽聽聽聽聽聽聽 if( this.getValueAt( row, col ).equals( Boolean.FALSE ) )
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 selectBody.remove( row );
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 prepareModel.fireTableDataChanged();聽 //閫氬憡涓昏〃緇撴瀯鍙樺寲
聽聽聽聽聽聽聽 this.fireTableDataChanged();聽聽聽聽聽聽聽聽聽 //閫氬憡嬈¤〃緇撴瀯鍙樺寲
聽聽聽聽聽聽聽 selectRowHeaderModel.setRowCount( selectBody.size() );聽 //璁╂琛ㄨ澶磋窡鐫嬈¤〃琛屾暟鍙樺寲
聽聽聽聽聽 }
聽聽聽 };
聽聽聽 selectTable.setModel( selectModel );
聽聽聽 prepareRowHeaderModel.setRowCount( prepareBody.size() );
聽聽聽 selectRowHeaderModel.setRowCount( selectBody.size() );
聽 }
聽
聽 /**
聽聽 *
聽聽 * 鍙栨秷鎵鏈夐夋嫨鐨勪漢鍛?br />聽聽 *
聽聽 */
聽 private final void deselectAll()
聽 {
聽聽聽 for( int i=0; i<selectBody.size(); i++ )
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 ( (Object[])selectBody.get( i ) )[0]=Boolean.FALSE;聽 //灝嗘墍鏈夐夋嫨鐨勮鐨勭涓鍒楄涓篺alse
聽聽聽聽聽聽 }
聽聽聽 selectBody.clear();聽 //鍒犻櫎宸茬粡閫夋嫨鐨勫唴瀹?/font>
聽聽聽 prepareModel.fireTableDataChanged();聽 //閫氬憡涓昏〃緇撴瀯鍙樺寲
聽聽聽 selectModel.fireTableDataChanged();聽聽 //閫氬憡嬈¤〃緇撴瀯鍙樺寲
聽聽聽 selectRowHeaderModel.setRowCount( selectBody.size() );聽 //璁╂琛ㄨ澶磋窡鐫嬈¤〃琛屾暟鍙樺寲
聽 }
聽
聽 /**
聽聽 *
聽聽 * 鍏抽棴紼嬪簭
聽聽 *
聽聽 *
聽聽 */
聽 private void closeApplication()
聽 {
聽聽聽 Toolkit.getDefaultToolkit().beep();
聽聽聽 int answer=JOptionPane.showConfirmDialog( TableChooser.this, "鎮ㄧ湡鐨勮閫鍑烘緋葷粺錛?, "閫鍑虹▼搴?, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null );
聽聽聽 if( answer==JOptionPane.YES_OPTION )聽 //閫夋嫨鈥滄槸鈥?br />聽聽聽聽聽 {
聽聽聽聽聽聽聽 System.exit( 0 );
聽聽聽聽聽 }
聽聽聽 else if( answer==JOptionPane.NO_OPTION )聽 //閫夋嫨鈥滃惁鈥?br />聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 return;
聽聽聽聽聽聽聽聽聽聽 }
聽 }
聽 /**
聽聽 *
聽聽 * 鍏ュ彛涓葷▼搴?br />聽聽 *
聽聽 */
//*/////////////////////////////////////////////////////////////////////////////
聽 public static void main( String args[] )
聽 {
聽聽聽 //鏀瑰彉GUI瀛椾綋
聽聽聽 Font font=new Font( "瀹嬩綋", Font.PLAIN, 12 );
聽聽聽 Enumeration keys=UIManager.getLookAndFeelDefaults().keys();
聽聽聽 while( keys.hasMoreElements() )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 Object key=keys.nextElement();
聽聽聽聽聽聽聽聽聽聽 if( UIManager.get( key ) instanceof Font )
聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 UIManager.put( key, font );
聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 }
聽聽聽 //鏀瑰彉ComboBox鑳屾櫙鑹?br />聽聽聽 UIManager.put( "ComboBox.foreground", Color.black );
聽聽聽 UIManager.put( "ComboBox.background", Color.white );
聽聽聽 UIManager.put( "ComboBox.disabledForeground", Color.gray );
聽聽聽 UIManager.put( "ComboBox.disabledBackground", Color.white );
聽聽聽 UIManager.put( "Viewport.background", Color.white );
聽聽聽 //new TableChooser( true ).setVisible( true );
聽聽聽 new TableChooser( false ).setVisible( true );
聽 }
//*/////////////////////////////////////////////////////////////////////////////
}
聽
聽
/***********************************************************
聽*
聽* 寰呴夈佸凡閫夎〃鏍艱澶寸敤鐨勬覆鏌撳櫒Renderer
聽*
聽**********************************************************/
class RowHeaderRenderer extends JLabel implements TableCellRenderer
{
聽 private JTable refTable;
聽 private JTableHeader header;
聽 private Color headerForeground;
聽 private Color headerBackground;
聽 private Font headerFont;
聽 public RowHeaderRenderer( JTable refTable )
聽 {
聽聽聽 this.refTable=refTable;
聽聽聽 this.header=refTable.getTableHeader();
聽聽聽 this.headerForeground=header.getForeground();
聽聽聽 this.headerBackground=header.getBackground();
聽聽聽 this.headerFont=header.getFont();
聽 }
聽 public Component getTableCellRendererComponent( JTable table,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Object obj,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 boolean isSelected,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 boolean hasFocus,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int row,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int col )
聽 {
聽聽聽 this.setOpaque( true );
聽聽聽 //璁句負TableHeader鐨勮竟妗嗙被鍨?br />聽聽聽 this.setBorder( UIManager.getBorder( "TableHeader.cellBorder" ) );
聽聽聽 //灞呬腑鏄劇ず鏂囧瓧
聽聽聽 this.setHorizontalAlignment( CENTER );
聽聽聽 //璁劇疆鑳屾櫙鑹蹭負TableHeader鐨勮儗鏅壊
聽聽聽 this.setBackground( headerBackground );
聽聽聽 if( isSelected )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 //褰撻夊彇鍗曞厓鏍兼椂,鍦╮ow header涓婅緗垚閫夊彇棰滆壊
聽聽聽聽聽聽聽 this.setForeground( Color.white );
聽聽聽聽聽聽聽 this.setBackground( UIManager.getColor( "ScrollBar.thumbShadow" ) );
聽聽聽聽聽聽聽 this.setFont( headerFont );
聽聽聽聽聽聽聽 this.setText( String.valueOf( row+1 )+"*" );聽聽聽 //鏄劇ず琛屾暟
聽聽聽聽聽 }
聽聽聽 else{ this.setForeground( headerForeground );
聽聽聽聽聽聽聽聽聽 this.setFont( headerFont );
聽聽聽聽聽聽聽聽聽 this.setText( String.valueOf( row+1 ) );聽聽聽 //鏄劇ず琛屾暟
聽聽聽聽聽聽聽 }
聽聽聽 return this;
聽 }
}
聽
聽
/***********************************************************
聽*
聽* 寰呴夈佸凡閫夎〃鏍艱澶寸敤鐨凪odel
聽*
聽**********************************************************/
class RowHeaderModel extends DefaultTableModel
{
聽 RowHeaderModel( int row, int col )
聽 {
聽聽聽 super( row, col );
聽 }
聽 public boolean isCellEditable( int row, int col )
聽 {
聽聽聽 return false;聽 //鏁翠釜琛屽ご涓嶇粰緙栬緫
聽 }
}
聽
聽
/***********************************************************
聽*
聽* 寰呴夈佸凡閫夎〃鏍煎乏涓婅Corner
聽*
聽**********************************************************/
class RowHeaderCorner extends JLabel
{
聽 private JTable table;
聽 RowHeaderCorner( JTable table, String title )
聽 {
聽聽聽 super( title, JLabel.CENTER );
聽聽聽 this.table=table;
聽聽聽 this.addMouseListener( new MouseAdapter()
聽聽聽 {
聽聽聽聽聽 public void mousePressed( MouseEvent e )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 tableSelectAll();
聽聽聽聽聽 }
聽聽聽 } );
聽聽聽 this.setBorder( UIManager.getBorder( "TableHeader.cellBorder" ) );
聽 }
聽 private void tableSelectAll()
聽 {
聽聽聽 table.selectAll();
聽 }
}
聽
聽
/***********************************************************
聽*
聽* 寰呴夈佸凡閫夎〃鏍肩敤鐨勬覆鏌撳櫒Renderer
聽*
聽**********************************************************/
class ShowTableRenderer extends DefaultTableCellRenderer
{
聽 public Component getTableCellRendererComponent( JTable table,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Object obj,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 boolean isSelected,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 boolean hasFocus,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int row,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int col )
聽 {
聽聽聽 super.getTableCellRendererComponent( table,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 obj,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 isSelected,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 hasFocus,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 row,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 col );
聽聽聽 this.setHorizontalAlignment( JLabel.CENTER );聽 //灞呬腑鏄劇ず鏂囧瓧
聽聽聽 return this;
聽 }
}
聽
聽
/***********************************************************
聽*
聽* 寰呴夈佸凡閫夎〃鏍肩敤鐨凪odel
聽*
聽**********************************************************/
class ShowTableModel extends AbstractTableModel
{
聽 private ArrayList tableBody;
聽 private String[] tableTitle;
聽 ShowTableModel( ArrayList body, String[] title )
聽 {
聽聽聽 this.tableBody聽 = body;
聽聽聽 this.tableTitle = title;
聽 }
聽 public Object getValueAt( int row, int col )
聽 {
聽聽聽 if( row>=0&&row<tableBody.size()&&col>=0&&col<tableTitle.length )聽 //鎺у埗寰堜弗
聽聽聽聽聽 {
聽聽聽聽聽聽聽 return ( (Object[])tableBody.get( row ) )[col];
聽聽聽聽聽 }
聽聽聽 else{ return null;
聽聽聽聽聽聽聽 }
聽 }
聽 public void setValueAt( Object value, int row, int col )
聽 {
聽聽聽 ( (Object[])tableBody.get( row ) )[col]=value;
聽 }
聽 public int getColumnCount()
聽 {
聽聽聽 return tableTitle.length;
聽 }
聽 public String getColumnName( int col )
聽 {
聽聽聽 if( col>=0&&col<tableTitle.length )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 return tableTitle[col];
聽聽聽聽聽 }
聽聽聽 else{ return "";
聽聽聽聽聽聽聽 }
聽 }
聽 public Class getColumnClass( int col )
聽 {
聽聽聽 if( col==0 )聽 //絎竴鍒椾負閫夋嫨妗?br />聽聽聽聽聽 {
聽聽聽聽聽聽聽 return Boolean.class;
聽聽聽聽聽 }
聽聽聽 return Object.class;
聽 }
聽 public int getRowCount()
聽 {
聽聽聽 return tableBody.size();
聽 }
聽 public boolean isCellEditable( int row, int col )
聽 {
聽聽聽 return ( col==0 );聽 //濡傛灉鏄涓鍒楃粰緙栬緫錛屽叾浠栦笉緇?br />聽 }
}
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.DefaultCellEditor;
import javax.swing.event.ChangeEvent;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
public class WhoFirstTest
{
聽 public static void main( String[]args )
聽 {
聽聽聽 final Object[][] data=new Object[][]{ { "11", new Integer( 1 ) }, { "22", new Integer( 2 ) } };
聽聽聽 final String[] header=new String[]{ "琛ㄥご1", "琛ㄥご2" };
聽聽聽 Table table=new Table( new BaseModel( data, header ) );
聽聽聽 JTextField editor=new JTextField();
聽聽聽 editor.setBorder( null );
聽聽聽 table.setDefaultEditor( Object.class, new BaseEditor( editor ) );
聽聽聽 table.setDefaultRenderer( Object.class, new BaseRenderer() );
聽聽聽 table.getModel().addTableModelListener( new TableModelListener()
聽聽聽 {
聽聽聽聽聽 public void tableChanged( TableModelEvent e )
聽聽聽聽聽 {
聽聽聽聽聽聽聽 System.out.println( "tableChanged called" );
聽聽聽聽聽聽聽 /*/
聽聽聽聽聽聽聽 System.out.println( "FirstRow="+e.getFirstRow() );
聽聽聽聽聽聽聽 System.out.println( "LastRow="+e.getLastRow() );
聽聽聽聽聽聽聽 System.out.println( "Column="+e.getColumn() );
聽聽聽聽聽聽聽 System.out.println( "Type="+( ( e.getType()==TableModelEvent.INSERT ) ? "Insert" : ( e.getType()==TableModelEvent.UPDATE ) ? "Update" : ( e.getType()==TableModelEvent.DELETE ) ? "Delete" : "Unknow" ) );
聽聽聽聽聽聽聽 /*/
聽聽聽聽聽聽聽 //Do CRUD for DB ...
聽聽聽聽聽聽聽 //*/
聽聽聽聽聽 }
聽聽聽 } );
聽聽聽 JFrame frame=new JFrame( "鐪嬬湅緇欏崟鍏冩牸璧嬪肩殑欏哄簭" );
聽聽聽 frame.setContentPane( new JScrollPane( table ) );
聽聽聽 frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
聽聽聽 frame.pack();
聽聽聽 frame.setVisible( true );
聽 }
}
class Table extends JTable
{
聽 public Table( TableModel model )
聽 {
聽聽聽 super( model );
聽 }
聽 public void editingStopped( ChangeEvent e )
聽 {
聽聽聽 System.out.println( "editingStopped called" );
聽聽聽 super.editingStopped( e );
聽 }
聽 public Component prepareRenderer( TableCellRenderer renderer, int row, int column )
聽 {
聽聽聽 System.out.println( "prepareRenderer called" );
聽聽聽 return super.prepareRenderer( renderer, row, column );
聽 }
}
class BaseModel extends AbstractTableModel
{
聽 Object[][] data = null;
聽 Object[] header = null;
聽 public BaseModel( Object[][] data, Object[] header )
聽 {
聽聽聽 this.data聽聽 = data;
聽聽聽 this.header = header;
聽 }
聽 public String getColumnName( int column )
聽 {
聽聽聽 return header[column].toString();
聽 }
聽 public int getRowCount()
聽 {
聽聽聽 return data.length;
聽 }
聽 public int getColumnCount()
聽 {
聽聽聽 return header.length;
聽 }
聽 public Object getValueAt( int row, int col )
聽 {
聽聽聽 return data[row][col];
聽 }
聽 public boolean isCellEditable( int row, int column )
聽 {
聽聽聽 return true;
聽 }
聽 public void setValueAt( Object value, int row, int col )
聽 {
聽聽聽 System.out.println( "setValueAt called" );
聽聽聽 data[row][col]=value;
聽聽聽 fireTableCellUpdated( row, col );
聽 }
聽 public void fireTableCellUpdated( int row, int column )
聽 {
聽聽聽 super.fireTableCellUpdated( row, column );
聽聽聽 System.out.println( "fireTableCellUpdated called" );
聽 }
聽 public void fireTableChanged( TableModelEvent e )
聽 {
聽聽聽 super.fireTableChanged( e );
聽聽聽 System.out.println( "fireTableChanged called" );
聽 }
}
class BaseRenderer extends DefaultTableCellRenderer
{
聽 public BaseRenderer()
聽 {
聽聽聽 super();
聽 }
聽 public Component getTableCellRendererComponent( JTable table,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Object value,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 boolean isSelected,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 boolean hasFocus,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int row,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int column )
聽 {
聽聽聽 System.out.println( "BaseRenderer called" );
聽聽聽 setText( ( value==null ) ? "" : value.toString() );
聽聽聽 return this;
聽 }
}
class BaseEditor extends DefaultCellEditor
{
聽 public BaseEditor( JTextField editor )
聽 {
聽聽聽 super( editor );
聽 }
聽 public boolean stopCellEditing()
聽 {
聽聽聽 System.out.println( "stopCellEditing called" );
聽聽聽 String value=(String)getCellEditorValue();
聽聽聽 try{ Integer.parseInt( value );
聽聽聽聽聽聽 }
聽聽聽 catch( NumberFormatException e )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 this.editorComponent.requestFocus();
聽聽聽聽聽聽聽聽聽聽 return false;
聽聽聽聽聽聽聽聽 }
聽聽聽 return super.stopCellEditing();
聽 }
}
import java.awt.Toolkit;
import java.sql.Types;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
import javax.swing.JOptionPane;
final class GetSQLServerType
{
聽 private Connection聽聽聽聽聽聽聽 connection;
聽 private Statement聽聽聽聽聽聽聽聽 statement;
聽 private ResultSet聽聽聽聽聽聽聽聽 resultSet;
聽 private ResultSetMetaData metaData;
聽 public GetSQLServerType()
聽 {
聽聽聽 try{ //瀹炰緥鍖朚SSQL2000鐨勯┍鍔?br />聽聽聽聽聽聽聽聽 Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );
聽聽聽聽聽聽聽聽 //榪炴帴鏁版嵁搴?br />聽聽聽聽聽聽聽聽 connection=DriverManager.getConnection( "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Northwind", "sa", "" );
聽聽聽聽聽聽聽聽 //鍒涘緩Statement鎺ュ彛瀵硅薄
聽聽聽聽聽聽聽聽 statement=connection.createStatement();
聽聽聽聽聽聽聽聽 resultSet=statement.executeQuery( " SELECT * FROM SQLServerType " );
聽聽聽聽聽聽聽聽 metaData=resultSet.getMetaData();
聽聽聽聽聽聽聽聽 int columnCount=metaData.getColumnCount();
聽聽聽聽聽聽聽聽 FileWriter fw=new FileWriter( "SQLServerType.htm" );
聽聽聽聽聽聽聽聽 BufferedWriter bfw=new BufferedWriter( fw );
聽聽聽聽聽聽聽聽 bfw.write( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=GBK\">" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "<title>SQL Server鏁版嵁綾誨瀷瀵瑰簲Java綾誨瀷</title>" ); bfw.newLine();
聽聽聽聽聽聽聽聽 //鐢蟲槑鏍峰紡琛?/////////////////////////////////////////
聽聽聽聽聽聽聽聽 bfw.write( "<style type=text/css>" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "td{ color:聽聽聽聽聽聽聽聽聽 #000000;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 background:聽聽聽聽 #FFFFFF;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 height:聽聽聽聽聽聽聽聽 20px;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 font-size:聽聽聽聽聽 10pt;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 font-weight:聽聽聽 normal;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 font-family:聽聽聽 瀹嬩綋;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 text-align:聽聽聽聽 right;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 vertical-align: middle;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 table-layout:聽聽 fixed;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 padding-top:聽聽聽 2;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 padding-bottom: 2;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 padding-left:聽聽 2;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 padding-right:聽 2;" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽 }" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "td.left{ text-align: left; }" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "td.center{ text-align: center; }" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "</style>" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "<body>" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "<table border=1 bordercolor=#000000 cellspacing=0 style=\"border-collapse:collapse\">" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽 <tr>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getColumnClassName( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getColumnLabel( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getCatalogName( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getColumnCount()</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getColumnDisplaySize( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getColumnName( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getColumnType( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getColumnTypeName( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getPrecision( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getScale( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getSchemaName( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.getTableName( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isAutoIncrement( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isCaseSensitive( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isCurrency( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isDefinitelyWritable( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isNullable( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isReadOnly( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isSearchable( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isSigned( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>metaData.isWritable( column )</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "聽 </tr>" );bfw.newLine();
聽聽聽聽聽聽聽聽 for( int column=0; column<columnCount; column++ )
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽 /*/
聽聽聽聽聽聽聽聽聽聽聽聽聽 //metaData鐨勬墍鏈夋柟娉?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getColumnCount() "聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 + metaData.getColumnCount() );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isAutoIncrement( "+( column+1 )+" ) "聽聽聽聽聽 + metaData.isAutoIncrement( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isCaseSensitive( "+( column+1 )+" ) "聽聽聽聽聽 + metaData.isCaseSensitive( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isSearchable( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽 + metaData.isSearchable( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isCurrency( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽聽聽 + metaData.isCurrency( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isNullable( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽聽聽 + metaData.isNullable( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isSigned( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽聽聽聽聽 + metaData.isSigned( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getColumnDisplaySize( "+( column+1 )+" ) " + metaData.getColumnDisplaySize( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getColumnLabel( "+( column+1 )+" ) "聽聽聽聽聽聽 + metaData.getColumnLabel( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getColumnName( "+( column+1 )+" ) "聽聽聽聽聽聽聽 + metaData.getColumnName( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getSchemaName( "+( column+1 )+" ) "聽聽聽聽聽聽聽 + metaData.getSchemaName( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getPrecision( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽 + metaData.getPrecision( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getScale( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽聽聽聽聽 + metaData.getScale( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getTableName( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽 + metaData.getTableName( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getCatalogName( "+( column+1 )+" ) "聽聽聽聽聽聽 + metaData.getCatalogName( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getColumnType( "+( column+1 )+" ) "聽聽聽聽聽聽聽 + metaData.getColumnType( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getColumnTypeName( "+( column+1 )+" ) "聽聽聽 + metaData.getColumnTypeName( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isReadOnly( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽聽聽 + metaData.isReadOnly( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isWritable( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽聽聽 + metaData.isWritable( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isDefinitelyWritable( "+( column+1 )+" ) " + metaData.isDefinitelyWritable( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.getColumnClassName( "+( column+1 )+" ) "聽聽 + metaData.getColumnClassName( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "metaData.isSigned( "+( column+1 )+" ) "聽聽聽聽聽聽聽聽聽聽聽聽 + metaData.isSigned( ( column+1 ) ) );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "--------------------------------------------------------------------------------" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 //*/
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽 <tr>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getColumnClassName( column+1 )聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getColumnLabel( column+1 )聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getCatalogName( column+1 )聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getColumnCount()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getColumnDisplaySize( column+1 ) +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getColumnName( column+1 )聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getColumnType( column+1 )聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getColumnTypeName( column+1 )聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getPrecision( column+1 )聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getScale( column+1 )聽聽聽聽聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getSchemaName( column+1 )聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.getTableName( column+1 )聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isAutoIncrement( column+1 )聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isCaseSensitive( column+1 )聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isCurrency( column+1 )聽聽聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isDefinitelyWritable( column+1 ) +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isNullable( column+1 )聽聽聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isReadOnly( column+1 )聽聽聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isSearchable( column+1 )聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isSigned( column+1 )聽聽聽聽聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽聽聽 <td noWrap class=center>"+metaData.isWritable( column+1 )聽聽聽聽聽聽聽聽聽聽 +"</td>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽聽聽 bfw.write( "聽 </tr>" );bfw.newLine();
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 bfw.write( "</table>" );bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.write( "</body>" ); bfw.newLine();
聽聽聽聽聽聽聽聽 bfw.flush();
聽聽聽聽聽聽聽聽 fw.close();
聽聽聽聽聽聽 }
聽聽聽 catch( IOException ioe )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 Toolkit.getDefaultToolkit().beep();
聽聽聽聽聽聽聽聽聽聽 JOptionPane.showMessageDialog( null, "鍒涘緩鏂囦歡澶辮觸錛?, "鍒涘緩鏂囦歡閿欒", JOptionPane.WARNING_MESSAGE );
聽聽聽聽聽聽聽聽聽聽 System.out.println( ioe );
聽聽聽聽聽聽聽聽 }
聽聽聽 catch( ClassNotFoundException cnfe )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 Toolkit.getDefaultToolkit().beep();
聽聽聽聽聽聽聽聽聽聽 JOptionPane.showMessageDialog( null, "鎵句笉鍒版暟鎹簱椹卞姩鏂囦歡錛?, "鏁版嵁搴撻敊璇?, JOptionPane.WARNING_MESSAGE );
聽聽聽聽聽聽聽聽聽聽 System.out.println( cnfe );
聽聽聽聽聽聽聽聽 }
聽聽聽 catch( SQLException se )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 Toolkit.getDefaultToolkit().beep();
聽聽聽聽聽聽聽聽聽聽 JOptionPane.showMessageDialog( null, "榪炴帴鏁版嵁搴撳け璐ワ紒璇鋒鏌ユ暟鎹簱鏄惁榪愯銆?, "鏁版嵁搴撻敊璇?, JOptionPane.WARNING_MESSAGE );
聽聽聽聽聽聽聽聽聽聽 System.out.println( se );
聽聽聽聽聽聽聽聽 }
聽聽聽 finally{ try{ if( resultSet!=null )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 resultSet.close();聽 //鍏抽棴ResultSet鎺ュ彛瀹炰緥
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( statement!=null )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 statement.close();聽 //鍏抽棴Statement鎺ュ彛瀹炰緥
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( connection!=null )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 connection.close();聽 //鍏抽棴Connection鎺ュ彛瀹炰緥
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽 catch( SQLException se )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println( se );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽 }
聽 }
聽 public static void main( String[] arg )
聽 {
聽聽聽 GetSQLServerType g=new GetSQLServerType();
聽 }
}
/*******************************************************************************
聽*
聽* 浣跨敤 net view /domain 寰楀埌宸ヤ綔緇勫垪琛?br />聽*
聽* 浣跨敤 net view /domain:workgroup 寰楀埌鎸囧畾宸ヤ綔緇勭殑鏈哄櫒鍒楄〃
聽*
聽* Author: NeedJava
聽*
聽* Modified: 2006.09.11
聽*
聽* Version: 1.0
聽*
聽******************************************************************************/
public class Neighborhood
{
聽 private static String getNeighborhood( String command, String domain )
聽 {
聽聽聽 String line="";
聽聽聽 boolean begin=false;
聽聽聽 StringBuffer sb=new StringBuffer();
聽聽聽 try{ Process process=Runtime.getRuntime().exec( command );
聽聽聽聽聽聽聽聽 BufferedReader br=new BufferedReader( new InputStreamReader( process.getInputStream() ) );
聽聽聽聽聽聽聽聽 while( ( line=br.readLine() )!=null )
聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 line=line.trim();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //浣犵殑宸ヤ綔緇勫崈涓囦笉瑕佸懡鍚嶄負鈥滃懡浠ゆ垚鍔熷畬鎴愩傗濇垨鑰呮槸鈥淭he command completed successfully.鈥?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( line.endsWith( "鍛戒護鎴愬姛瀹屾垚銆? )||line.equalsIgnoreCase( "The command completed successfully." ) )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 begin=false;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 break;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( begin )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( domain.length()>0 )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 sb.append( "聽 " ).append( line ).append( "\r\n" );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //System.out.println( "寰楀埌聽聽 "+line );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else{ sb.append( line ).append( "\r\n" );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //System.out.println( "寰楀埌 "+line );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 sb.append( getNeighborhood( "net view /domain:"+line, line ) );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if( line.endsWith( "-" ) )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 begin=true;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 br.close();
聽聽聽聽聽聽聽聽 process.waitFor();
聽聽聽聽聽聽 }
聽聽聽 catch( IOException ioe )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 System.out.println( ioe );
聽聽聽聽聽聽聽聽 }
聽聽聽 catch( Exception e )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 System.out.println( e );
聽聽聽聽聽聽聽聽 }
聽聽聽 return sb.toString();
聽 }
聽 public static void main( String[] args )
聽 {
聽聽聽 System.out.println( Neighborhood.getNeighborhood( "net view /domain", "" ) );
聽 }
}