<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 24, 文章 - 6, 評論 - 70, 引用 - 0
    數據加載中……

    java swt實現的2D效果(附代碼)!

    用java swt實現的一個2d效果,很漂亮!

    代碼如下:

    import? java.io.IOException;
    import? java.io.InputStream;
    import? java.util.HashSet;
    import? java.util.Iterator;
    import? java.util.MissingResourceException;
    import? java.util.Random;
    import? java.util.ResourceBundle;
    import? java.util.Vector;

    import? org.eclipse.swt.SWT;
    import? org.eclipse.swt.SWTException;
    import? org.eclipse.swt.graphics.Color;
    import? org.eclipse.swt.graphics.Font;
    import? org.eclipse.swt.graphics.FontData;
    import? org.eclipse.swt.graphics.GC;
    import? org.eclipse.swt.graphics.Image;
    import? org.eclipse.swt.graphics.Path;
    import? org.eclipse.swt.graphics.Point;
    import? org.eclipse.swt.graphics.RGB;
    import? org.eclipse.swt.graphics.Rectangle;
    import? org.eclipse.swt.layout.GridData;
    import? org.eclipse.swt.layout.GridLayout;
    import? org.eclipse.swt.layout.RowLayout;
    import? org.eclipse.swt.widgets.Canvas;
    import? org.eclipse.swt.widgets.ColorDialog;
    import? org.eclipse.swt.widgets.Combo;
    import? org.eclipse.swt.widgets.Composite;
    import? org.eclipse.swt.widgets.Control;
    import? org.eclipse.swt.widgets.Display;
    import? org.eclipse.swt.widgets.Event;
    import? org.eclipse.swt.widgets.Group;
    import? org.eclipse.swt.widgets.Label;
    import? org.eclipse.swt.widgets.Listener;
    import? org.eclipse.swt.widgets.Menu;
    import? org.eclipse.swt.widgets.MenuItem;
    import? org.eclipse.swt.widgets.MessageBox;
    import? org.eclipse.swt.widgets.Sash;
    import? org.eclipse.swt.widgets.Shell;
    import? org.eclipse.swt.widgets.Spinner;
    import? org.eclipse.swt.widgets.ToolBar;
    import? org.eclipse.swt.widgets.ToolItem;
    import? org.eclipse.swt.widgets.Tree;
    import? org.eclipse.swt.widgets.TreeItem;

    public?class? GraphicsExample? {

    ?? Composite?parent;

    ?? GraphicsTab []? tabs;

    ?? GraphicsTab?tab;

    ?? Object []? tabBackground;

    ?? boolean? animate;

    ?? Listener?redrawListener;

    ?? ToolBar?toolBar;

    ?? Tree?tabList;

    ?? Canvas?canvas;

    ?? Composite?controlPanel,?tabPanel;

    ?? ToolItem?playItem,?pauseItem,?backItem,?dbItem;

    ?? Spinner?timerSpinner;

    ?? Menu?backMenu;

    ?? MenuItem?customMI;

    ?? Image?customImage;

    ?? Color?customColor;

    ?? Vector?images;

    ?? static? boolean? advanceGraphics,?advanceGraphicsInit;

    ?? static?final? int? TIMER?=? 30 ;

    ?? public? GraphicsExample ( final? Composite?parent )?{
    ???? this .parent?=?parent;
    ???? redrawListener?=? new? Listener ()?{
    ?????? public? void? handleEvent ( Event?e )?{
    ???????? redraw () ;
    ?????? }
    ???? } ;
    ???? GridData?data;
    ???? GridLayout?layout?=? new? GridLayout ( 3 ,? false ) ;
    ???? layout.horizontalSpacing?=? 1 ;
    ???? parent.setLayout ( layout ) ;
    ???? tabs?=?createTabs () ;
    ???? images?=? new? Vector () ;
    ???? createToolBar ( parent ) ;
    ???? createTabList ( parent ) ;
    ???? final? Sash?sash?=? new? Sash ( parent,?SWT.VERTICAL ) ;
    ???? createTabPanel ( parent ) ;
    ???? data?=? new? GridData ( SWT.FILL,?SWT.CENTER,?true,? false ) ;
    ???? data.horizontalSpan?=? 3 ;
    ???? toolBar.setLayoutData ( data ) ;
    ???? data?=? new? GridData ( SWT.CENTER,?SWT.FILL,?false,? true ) ;
    ???? data.widthHint?=?tabList.computeSize ( SWT.DEFAULT,?SWT.DEFAULT ) .x?+? 50 ;
    ???? tabList.setLayoutData ( data ) ;
    ???? data?=? new? GridData ( SWT.CENTER,?SWT.FILL,?false,? true ) ;
    ???? sash.setLayoutData ( data ) ;
    ???? data?=? new? GridData ( SWT.FILL,?SWT.FILL,?true,? true ) ;
    ???? tabPanel.setLayoutData ( data ) ;
    ???? sash.addListener ( SWT.Selection,? new? Listener ()?{
    ?????? public? void? handleEvent ( Event?event )?{
    ???????? if? ( event.detail?!=?SWT.DRAG )?{
    ?????????? GridData?data?=? ( GridData )? tabList.getLayoutData () ;
    ?????????? data.widthHint?=?event.x
    ?????????????? -?tabList.computeTrim ( 0 ,? 0 ,? 0 ,? 0 ) .width;
    ?????????? parent.layout ( true ) ;
    ?????????? animate?=?pauseItem.getEnabled () ;
    ???????? }? else? {
    ?????????? animate?=? false ;
    ???????? }
    ?????? }
    ???? }) ;
    ???? setTab ( tab ) ;
    ???? startAnimationTimer () ;
    ?? }

    ?? boolean? checkAdvancedGraphics ()?{
    ???? if? ( advanceGraphicsInit )
    ?????? return? advanceGraphics;
    ???? advanceGraphicsInit?=? true ;
    ???? Display?display?=?Display.getCurrent () ;
    ???? try? {
    ?????? Path?path?=? new? Path ( display ) ;
    ?????? path.dispose () ;
    ???? }? catch? ( SWTException?e )?{
    ?????? Shell?shell?=?display.getActiveShell () ,?newShell?=? null ;
    ?????? if? ( shell?==? null )
    ???????? shell?=?newShell?=? new? Shell ( display ) ;
    ?????? MessageBox?dialog?=? new? MessageBox ( shell,?SWT.ICON_WARNING?|?SWT.OK ) ;
    ?????? dialog.setText ( "Warning" ) ;? //$NON-NLS-1$
    ?????? dialog.setMessage ( "LibNotFound" ) ;? //$NON-NLS-1$
    ?????? dialog.open () ;
    ?????? if? ( newShell?!=? null )
    ???????? newShell.dispose () ;
    ?????? return?false ;
    ???? }
    ???? return? advanceGraphics?=? true ;
    ?? }

    ?? void? createCanvas ( Composite?parent )?{
    ???? canvas?=? new? Canvas ( parent,?SWT.NO_BACKGROUND ) ;
    ???? canvas.addListener ( SWT.Paint,? new? Listener ()?{
    ?????? public? void? handleEvent ( Event?event )?{
    ???????? GC?gc;
    ???????? Rectangle?rect?=?canvas.getClientArea () ;
    ???????? Image?buffer?=? null ;
    ???????? if? ( dbItem.getSelection ())?{
    ?????????? buffer?=? new? Image ( canvas.getDisplay () ,?rect ) ;
    ?????????? gc?=? new? GC ( buffer ) ;
    ???????? }? else? {
    ?????????? gc?=?event.gc;
    ???????? }
    ???????? paintBackground ( gc,?rect ) ;
    ???????? GraphicsTab?tab?=?getTab () ;
    ???????? if? ( tab?!=? null )
    ?????????? tab.paint ( gc,?rect.width,?rect.height ) ;
    ???????? if? ( gc?!=?event.gc )
    ?????????? gc.dispose () ;
    ???????? if? ( buffer?!=? null )?{
    ?????????? event.gc.drawImage ( buffer,? 0 ,? 0 ) ;
    ?????????? buffer.dispose () ;
    ???????? }
    ?????? }
    ???? }) ;
    ?? }

    ?? void? createControlPanel ( Composite?parent )?{
    ???? Group?group;
    ???? controlPanel?=?group?=? new? Group ( parent,?SWT.NONE ) ;
    ???? group.setText ( getResourceString ( "Settings" )) ;? //$NON-NLS-1$
    ???? controlPanel.setLayout ( new? RowLayout ()) ;
    ?? }

    ?? void? createTabPanel ( Composite?parent )?{
    ???? tabPanel?=? new? Composite ( parent,?SWT.NONE ) ;
    ???? GridData?data;
    ???? GridLayout?layout?=? new? GridLayout ( 1 ,? false ) ;
    ???? layout.marginHeight?=?layout.marginWidth?=? 0 ;
    ???? tabPanel.setLayout ( layout ) ;
    ???? createCanvas ( tabPanel ) ;
    ???? createControlPanel ( tabPanel ) ;
    ???? data?=? new? GridData ( SWT.FILL,?SWT.FILL,?true,? true ) ;
    ???? canvas.setLayoutData ( data ) ;
    ???? data?=? new? GridData ( SWT.FILL,?SWT.CENTER,?true,? false ) ;
    ???? controlPanel.setLayoutData ( data ) ;
    ?? }

    ?? void? createToolBar ( final? Composite?parent )?{
    ???? final? Display?display?=?parent.getDisplay () ;

    ???? toolBar?=? new? ToolBar ( parent,?SWT.FLAT ) ;
    ???? Listener?toolBarListener?=? new? Listener ()?{
    ?????? public? void? handleEvent ( Event?event )?{
    ???????? switch? ( event.type )?{
    ???????? case? SWT.Selection:? {
    ?????????? if? ( event.widget?==?playItem )?{
    ???????????? animate?=? true ;
    ???????????? playItem.setEnabled ( !animate ) ;
    ???????????? pauseItem.setEnabled ( animate ) ;
    ?????????? }? else?if? ( event.widget?==?pauseItem )?{
    ???????????? animate?=? false ;
    ???????????? playItem.setEnabled ( !animate ) ;
    ???????????? pauseItem.setEnabled ( animate ) ;
    ?????????? }? else?if? ( event.widget?==?backItem )?{
    ???????????? final? ToolItem?toolItem?=? ( ToolItem )? event.widget;
    ???????????? final? ToolBar?toolBar?=?toolItem.getParent () ;
    ???????????? Rectangle?toolItemBounds?=?toolItem.getBounds () ;
    ???????????? Point?point?=?toolBar.toDisplay ( new? Point (
    ???????????????? toolItemBounds.x,?toolItemBounds.y )) ;
    ???????????? backMenu.setLocation ( point.x,?point.y
    ???????????????? +?toolItemBounds.height ) ;
    ???????????? backMenu.setVisible ( true ) ;
    ?????????? }
    ???????? }
    ?????????? break ;
    ???????? }
    ?????? }
    ???? } ;

    ???? playItem?=? new? ToolItem ( toolBar,?SWT.PUSH ) ;
    ???? playItem.setText ( getResourceString ( "Play" )) ;? //$NON-NLS-1$
    ???? playItem.setImage ( loadImage ( display,? "play.gif" )) ;? //$NON-NLS-1$
    ???? playItem.addListener ( SWT.Selection,?toolBarListener ) ;

    ???? pauseItem?=? new? ToolItem ( toolBar,?SWT.PUSH ) ;
    ???? pauseItem.setText ( getResourceString ( "Pause" )) ;? //$NON-NLS-1$
    ???? pauseItem.setImage ( loadImage ( display,? "pause.gif" )) ;? //$NON-NLS-1$
    ???? pauseItem.addListener ( SWT.Selection,?toolBarListener ) ;

    ???? backItem?=? new? ToolItem ( toolBar,?SWT.PUSH ) ;
    ???? backItem.setText ( getResourceString ( "Background" )) ;? //$NON-NLS-1$
    ???? backItem.addListener ( SWT.Selection,?toolBarListener ) ;
    ???? String []? names?=? new? String []?{? getResourceString ( "White" ) ,? //$NON-NLS-1$
    ???????? getResourceString ( "Black" ) ,? //$NON-NLS-1$
    ???????? getResourceString ( "Red" ) ,? //$NON-NLS-1$
    ???????? getResourceString ( "Green" ) ,? //$NON-NLS-1$
    ???????? getResourceString ( "Blue" ) ,? //$NON-NLS-1$
    ???????? getResourceString ( "CustomColor" ) ,? //$NON-NLS-1$
    ???? } ;
    ???? Color []? colors?=? new? Color []?{? display.getSystemColor ( SWT.COLOR_WHITE ) ,
    ???????? display.getSystemColor ( SWT.COLOR_BLACK ) ,
    ???????? display.getSystemColor ( SWT.COLOR_RED ) ,
    ???????? display.getSystemColor ( SWT.COLOR_GREEN ) ,
    ???????? display.getSystemColor ( SWT.COLOR_BLUE ) ,?null,? } ;
    ???? backMenu?=? new? Menu ( parent ) ;
    ???? Listener?listener?=? new? Listener ()?{
    ?????? public? void? handleEvent ( Event?event )?{
    ???????? MenuItem?item?=? ( MenuItem )? event.widget;
    ???????? if? ( customMI?==?item )?{
    ?????????? ColorDialog?dialog?=? new? ColorDialog ( parent.getShell ()) ;
    ?????????? RGB?rgb?=?dialog.open () ;
    ?????????? if? ( rgb?==? null )
    ???????????? return ;
    ?????????? if? ( customColor?!=? null )
    ???????????? customColor.dispose () ;
    ?????????? customColor?=? new? Color ( display,?rgb ) ;
    ?????????? if? ( customImage?!=? null )
    ???????????? customImage.dispose () ;
    ?????????? customImage?=?createImage ( display,?customColor ) ;
    ?????????? item.setData ( new? Object []?{? customColor,?customImage? }) ;
    ?????????? item.setImage ( customImage ) ;
    ???????? }
    ???????? tabBackground?=? ( Object [])? item.getData () ;
    ???????? backItem.setImage (( Image )? tabBackground [ 1 ]) ;
    ???????? canvas.redraw () ;
    ?????? }
    ???? } ;
    ???? for? ( int? i?=? 0 ;?i?<?names.length;?i++ )?{
    ?????? MenuItem?item?=? new? MenuItem ( backMenu,?SWT.NONE ) ;
    ?????? item.setText ( names [ i ]) ;
    ?????? item.addListener ( SWT.Selection,?listener ) ;
    ?????? Image?image?=? null ;
    ?????? if? ( colors [ i ]? !=? null )?{
    ???????? image?=?createImage ( display,?colors [ i ]) ;
    ???????? images.addElement ( image ) ;
    ???????? item.setImage ( image ) ;
    ?????? }? else? {
    ???????? //?custom?menu?item
    ???????? customMI?=?item;
    ?????? }
    ?????? item.setData ( new? Object []?{? colors [ i ] ,?image? }) ;
    ?????? if? ( tabBackground?==? null )?{
    ???????? tabBackground?=? ( Object [])? item.getData () ;
    ???????? backItem.setImage (( Image )? tabBackground [ 1 ]) ;
    ?????? }
    ???? }

    ???? dbItem?=? new? ToolItem ( toolBar,?SWT.CHECK ) ;
    ???? dbItem.setText ( getResourceString ( "DoubleBuffer" )) ;? //$NON-NLS-1$
    ???? dbItem.setImage ( loadImage ( display,? "db.gif" )) ;? //$NON-NLS-1$

    ???? ToolItem?separator?=? new? ToolItem ( toolBar,?SWT.SEPARATOR ) ;
    ???? Composite?comp?=? new? Composite ( toolBar,?SWT.NONE ) ;
    ???? GridData?data;
    ???? GridLayout?layout?=? new? GridLayout ( 1 ,? false ) ;
    ???? layout.verticalSpacing?=? 0 ;
    ???? layout.marginWidth?=?layout.marginHeight?=? 3 ;
    ???? comp.setLayout ( layout ) ;
    ???? timerSpinner?=? new? Spinner ( comp,?SWT.BORDER?|?SWT.WRAP ) ;
    ???? data?=? new? GridData ( SWT.CENTER,?SWT.CENTER,?false,? false ) ;
    ???? timerSpinner.setLayoutData ( data ) ;
    ???? Label?label?=? new? Label ( comp,?SWT.NONE ) ;
    ???? label.setText ( getResourceString ( "Animation" )) ;? //$NON-NLS-1$
    ???? data?=? new? GridData ( SWT.CENTER,?SWT.CENTER,?false,? false ) ;
    ???? label.setLayoutData ( data ) ;
    ???? timerSpinner.setMaximum ( 1000 ) ;
    ???? timerSpinner.setSelection ( TIMER ) ;
    ???? timerSpinner.setSelection ( TIMER ) ;
    ???? separator.setControl ( comp ) ;
    ???? separator.setWidth ( comp.computeSize ( SWT.DEFAULT,?SWT.DEFAULT ) .x ) ;
    ?? }

    ?? Image?createImage ( Display?display,?Color?color )?{
    ???? Image?image?=? new? Image ( display,? 16 ,? 16 ) ;
    ???? GC?gc?=? new? GC ( image ) ;
    ???? gc.setBackground ( color ) ;
    ???? Rectangle?rect?=?image.getBounds () ;
    ???? gc.fillRectangle ( rect ) ;
    ???? if? ( color.equals ( display.getSystemColor ( SWT.COLOR_BLACK )))?{
    ?????? gc.setForeground ( display.getSystemColor ( SWT.COLOR_WHITE )) ;
    ???? }
    ???? gc.drawRectangle ( rect.x,?rect.y,?rect.width?-? 1 ,?rect.height?-? 1 ) ;
    ???? gc.dispose () ;
    ???? return? image;
    ?? }

    ?? void? createTabList ( Composite?parent )?{
    ???? tabList?=? new? Tree ( parent,?SWT.SINGLE?|?SWT.H_SCROLL?|?SWT.V_SCROLL
    ???????? |?SWT.BORDER ) ;
    ???? HashSet?set?=? new? HashSet () ;
    ???? for? ( int? i?=? 0 ;?i?<?tabs.length;?i++ )?{
    ?????? GraphicsTab?tab?=?tabs [ i ] ;
    ?????? set.add ( tab.getCategory ()) ;
    ???? }
    ???? for? ( Iterator?iter?=?set.iterator () ;?iter.hasNext () ; )?{
    ?????? String?text?=? ( String )? iter.next () ;
    ?????? TreeItem?item?=? new? TreeItem ( tabList,?SWT.NONE ) ;
    ?????? item.setText ( text ) ;
    ???? }
    ???? TreeItem []? items?=?tabList.getItems () ;
    ???? for? ( int? i?=? 0 ;?i?<?items.length;?i++ )?{
    ?????? TreeItem?item?=?items [ i ] ;
    ?????? for? ( int? j?=? 0 ;?j?<?tabs.length;?j++ )?{
    ???????? GraphicsTab?tab?=?tabs [ j ] ;
    ???????? if? ( item.getText () .equals ( tab.getCategory ()))?{
    ?????????? TreeItem?item1?=? new? TreeItem ( item,?SWT.NONE ) ;
    ?????????? item1.setText ( tab.getText ()) ;
    ?????????? item1.setData ( tab ) ;
    ???????? }
    ?????? }
    ???? }
    ???? tabList.addListener ( SWT.Selection,? new? Listener ()?{
    ?????? public? void? handleEvent ( Event?event )?{
    ???????? TreeItem?item?=? ( TreeItem )? event.item;
    ???????? if? ( item?!=? null )?{
    ?????????? setTab (( GraphicsTab )? item.getData ()) ;
    ???????? }
    ?????? }
    ???? }) ;
    ?? }

    ?? GraphicsTab []? createTabs ()?{
    ???? return?new? GraphicsTab []?{? new? LineTab ( this ) ,? new? StarPolyTab ( this ) ,
    ???????? tab?=? new? IntroTab ( this ) ,? new? BlackHoleTab ( this ) ,? } ;
    ?? }

    ?? /**
    ??? *?Disposes?all?resources?created?by?the?receiver.
    ??? */
    ?? public? void? dispose ()?{
    ???? if? ( tabs?!=? null )?{
    ?????? for? ( int? i?=? 0 ;?i?<?tabs.length;?i++ )?{
    ???????? GraphicsTab?tab?=?tabs [ i ] ;
    ???????? tab.dispose () ;
    ?????? }
    ???? }
    ???? tabs?=? null ;
    ???? if? ( images?!=? null )?{
    ?????? for? ( int? i?=? 0 ;?i?<?images.size () ;?i++ )?{
    ???????? (( Image )? images.elementAt ( i )) .dispose () ;
    ?????? }
    ???? }
    ???? images?=? null ;
    ???? if? ( customColor?!=? null )
    ?????? customColor.dispose () ;
    ???? customColor?=? null ;
    ???? if? ( customImage?!=? null )
    ?????? customImage.dispose () ;
    ???? customImage?=? null ;
    ?? }

    ?? TreeItem?findItemByData ( TreeItem []? items,?Object?data )?{
    ???? for? ( int? i?=? 0 ;?i?<?items.length;?i++ )?{
    ?????? TreeItem?item?=?items [ i ] ;
    ?????? if? ( item.getData ()? ==?data )
    ???????? return? item;
    ?????? item?=?findItemByData ( item.getItems () ,?data ) ;
    ?????? if? ( item?!=? null )
    ???????? return? item;
    ???? }
    ???? return?null ;
    ?? }

    ?? /**
    ??? *?Gets?the?current?tab.
    ??? */
    ?? public? GraphicsTab?getTab ()?{
    ???? return? tab;
    ?? }

    ?? Listener?getRedrawListener ()?{
    ???? return? redrawListener;
    ?? }

    ?? /**
    ??? *?Gets?a?string?from?the?resource?bundle.?We?don't?want?to?crash?because?of
    ??? *?a?missing?String.?Returns?the?key?if?not?found.
    ??? */
    ?? static? String?getResourceString ( String?key )?{
    ?????? return? "key" ;
    ?? }

    ?? static? Image?loadImage ( Display?display,?Class?clazz,?String?string )?{
    ???? InputStream?stream?=?clazz.getResourceAsStream ( string ) ;
    ???? if? ( stream?==? null )
    ?????? return?null ;
    ???? Image?image?=? null ;
    ???? try? {
    ?????? image?=? new? Image ( display,?stream ) ;
    ???? }? catch? ( SWTException?ex )?{
    ???? }? finally? {
    ?????? try? {
    ???????? stream.close () ;
    ?????? }? catch? ( IOException?ex )?{
    ?????? }
    ???? }
    ???? return? image;
    ?? }

    ?? Image?loadImage ( Display?display,?String?name )?{
    ???? Image?image?=?loadImage ( display,?GraphicsExample.class,?name ) ;
    ???? if? ( image?!=? null )
    ?????? images.addElement ( image ) ;
    ???? return? image;
    ?? }

    ?? void? paintBackground ( GC?gc,?Rectangle?rect )?{
    ???? gc.setBackground (( Color )? tabBackground [ 0 ]) ;
    ???? gc.fillRectangle ( rect ) ;
    ?? }

    ?? /**
    ??? *?Redraws?the?current?tab.
    ??? */
    ?? public? void? redraw ()?{
    ???? canvas.redraw () ;
    ?? }

    ?? /**
    ??? *?Grabs?input?focus.
    ??? */
    ?? public? void? setFocus ()?{
    ???? tabList.setFocus () ;
    ?? }

    ?? /**
    ??? *?Sets?the?current?tab.
    ??? */
    ?? public? void? setTab ( GraphicsTab?tab )?{
    ???? this .tab?=?tab;
    ???? Control []? children?=?controlPanel.getChildren () ;
    ???? for? ( int? i?=? 0 ;?i?<?children.length;?i++ )?{
    ?????? Control?control?=?children [ i ] ;
    ?????? control.dispose () ;
    ???? }
    ???? if? ( tab?!=? null )?{
    ?????? tab.createControlPanel ( controlPanel ) ;
    ?????? animate?=?tab.isAnimated () ;
    ???? }
    ???? playItem.setEnabled ( !animate ) ;
    ???? pauseItem.setEnabled ( animate ) ;
    ???? GridData?data?=? ( GridData )? controlPanel.getLayoutData () ;
    ???? children?=?controlPanel.getChildren () ;
    ???? data.exclude?=?children.length?==? 0 ;
    ???? controlPanel.setVisible ( !data.exclude ) ;
    ???? if? ( data.exclude )?{
    ?????? tabPanel.layout () ;
    ???? }? else? {
    ?????? tabPanel.layout ( children ) ;
    ???? }
    ???? if? ( tab?!=? null )?{
    ?????? TreeItem []? selection?=?tabList.getSelection () ;
    ?????? if? ( selection.length?==? 0? ||?selection [ 0 ] .getData ()? !=?tab )?{
    ???????? TreeItem?item?=?findItemByData ( tabList.getItems () ,?tab ) ;
    ???????? if? ( item?!=? null )
    ?????????? tabList.setSelection ( new? TreeItem []?{? item? }) ;
    ?????? }
    ???? }
    ???? canvas.redraw () ;
    ?? }

    ?? void? startAnimationTimer ()?{
    ???? final? Display?display?=?Display.getCurrent () ;
    ???? display.timerExec ( timerSpinner.getSelection () ,? new? Runnable ()?{
    ?????? public? void? run ()?{
    ???????? if? ( canvas.isDisposed ())
    ?????????? return ;
    ???????? if? ( animate )?{
    ?????????? GraphicsTab?tab?=?getTab () ;
    ?????????? if? ( tab?!=? null? &&?tab.isAnimated ())?{
    ???????????? Rectangle?rect?=?canvas.getClientArea () ;
    ???????????? tab.next ( rect.width,?rect.height ) ;
    ???????????? canvas.redraw () ;
    ???????????? canvas.update () ;
    ?????????? }
    ???????? }
    ???????? display.timerExec ( timerSpinner.getSelection () ,? this ) ;
    ?????? }
    ???? }) ;
    ?? }

    ?? public?static? void? main ( String []? args )?{
    ???? Display?display?=? new? Display () ;
    ???? Shell?shell?=? new? Shell ( display ) ;
    ???? shell.setText ( getResourceString ( "SWTGraphics" )) ;? //$NON-NLS-1$
    ???? final? GraphicsExample?example?=? new? GraphicsExample ( shell ) ;
    ???? shell.addListener ( SWT.Close,? new? Listener ()?{
    ?????? public? void? handleEvent ( Event?event )?{
    ???????? example.dispose () ;
    ?????? }
    ???? }) ;
    ???? shell.open () ;
    ???? while? ( !shell.isDisposed ())?{
    ?????? if? ( !display.readAndDispatch ())
    ???????? display.sleep () ;
    ???? }
    ?? }
    }

    /*******************************************************************************
    ? *?Copyright?(c)?2000,?2005?IBM?Corporation?and?others.?All?rights?reserved.
    ? *?This?program?and?the?accompanying?materials?are?made?available?under?the
    ? *?terms?of?the?Eclipse?Public?License?v1.0?which?accompanies?this?distribution,
    ? *?and?is?available?at?http://www.eclipse.org/legal/epl-v10.html
    ? *?
    ? *?Contributors:?IBM?Corporation?-?initial?API?and?implementation
    ? ******************************************************************************/
    abstract?class? GraphicsTab? {

    ?? GraphicsExample?example;

    ?? public? GraphicsTab ( GraphicsExample?example )?{
    ???? this .example?=?example;
    ?? }

    ?? /**
    ??? *?Creates?the?widgets?used?to?control?the?drawing.
    ??? */
    ?? public? void? createControlPanel ( Composite?parent )?{
    ?? }

    ?? /**
    ??? *?Disposes?resources?created?by?the?receiver.
    ??? */
    ?? public? void? dispose ()?{
    ?? }

    ?? /**
    ??? *?Answer?the?receiver's?name.
    ??? */
    ?? public?abstract? String?getText () ;

    ?? /**
    ??? *?Answer?the?receiver's?category.
    ??? */
    ?? public? String?getCategory ()?{
    ???? return? GraphicsExample.getResourceString ( "Misc" ) ;? //$NON-NLS-1$
    ?? }

    ?? /**
    ??? *?Answer?whether?the?receiver?is?animated?or?not.
    ??? */
    ?? public? boolean? isAnimated ()?{
    ???? return?false ;
    ?? }

    ?? /**
    ??? *?Advance?the?animation.
    ??? */
    ?? public? void? next ( int? width,? int? height )?{
    ?? }

    ?? /**
    ??? *?Paint?the?receiver?into?the?specified?GC.
    ??? */
    ?? public? void? paint ( GC?gc,? int? width,? int? height )?{
    ?? }

    }

    /*******************************************************************************
    ? *?Copyright?(c)?2000,?2005?IBM?Corporation?and?others.?All?rights?reserved.
    ? *?This?program?and?the?accompanying?materials?are?made?available?under?the
    ? *?terms?of?the?Eclipse?Public?License?v1.0?which?accompanies?this?distribution,
    ? *?and?is?available?at?http://www.eclipse.org/legal/epl-v10.html
    ? *?
    ? *?Contributors:?IBM?Corporation?-?initial?API?and?implementation
    ? ******************************************************************************/
    class? LineTab? extends? GraphicsTab? {

    ?? public? LineTab ( GraphicsExample?example )?{
    ???? super ( example ) ;
    ?? }

    ?? public? String?getText ()?{
    ???? return? GraphicsExample.getResourceString ( "Line" ) ;? //$NON-NLS-1$
    ?? }

    ?? public? void? paint ( GC?gc,? int? width,? int? height )?{
    ???? gc.drawLine ( 0 ,? 0 ,?width,?height ) ;
    ???? gc.drawLine ( width,? 0 ,? 0 ,?height ) ;
    ?? }
    }

    /*******************************************************************************
    ? *?Copyright?(c)?2000,?2005?IBM?Corporation?and?others.?All?rights?reserved.
    ? *?This?program?and?the?accompanying?materials?are?made?available?under?the
    ? *?terms?of?the?Eclipse?Public?License?v1.0?which?accompanies?this?distribution,
    ? *?and?is?available?at?http://www.eclipse.org/legal/epl-v10.html
    ? *?
    ? *?Contributors:?IBM?Corporation?-?initial?API?and?implementation
    ? ******************************************************************************/
    class? StarPolyTab? extends? GraphicsTab? {
    ?? int []? radial;

    ?? static?final? int? POINTS?=? 11 ;

    ?? Combo?fillRuleCb;

    ?? public? StarPolyTab ( GraphicsExample?example )?{
    ???? super ( example ) ;
    ???? radial?=? new? int [ POINTS?*? 2 ] ;
    ?? }

    ?? public? void? createControlPanel ( Composite?parent )?{
    ???? new? Label ( parent,?SWT.NONE ) .setText ( GraphicsExample
    ???????? .getResourceString ( "FillRule" )) ;? //$NON-NLS-1$
    ???? fillRuleCb?=? new? Combo ( parent,?SWT.DROP_DOWN ) ;
    ???? fillRuleCb.add ( "FILL_EVEN_ODD" ) ;
    ???? fillRuleCb.add ( "FILL_WINDING" ) ;
    ???? fillRuleCb.select ( 0 ) ;
    ???? fillRuleCb.addListener ( SWT.Selection,?example.getRedrawListener ()) ;
    ?? }

    ?? public? String?getCategory ()?{
    ???? return? GraphicsExample.getResourceString ( "Polygons" ) ;? //$NON-NLS-1$
    ?? }

    ?? public? String?getText ()?{
    ???? return? GraphicsExample.getResourceString ( "StarPolygon" ) ;? //$NON-NLS-1$
    ?? }

    ?? public? void? paint ( GC?gc,? int? width,? int? height )?{
    ???? int? centerX?=?width?/? 2 ;
    ???? int? centerY?=?height?/? 2 ;
    ???? int? pos?=? 0 ;
    ???? for? ( int? i?=? 0 ;?i?<?POINTS;?++i )?{
    ?????? double? r?=?Math.PI?*? 2? *?pos?/?POINTS;
    ?????? radial [ i?*? 2 ]? =? ( int )?(( 1? +?Math.cos ( r ))? *?centerX ) ;
    ?????? radial [ i?*? 2? +? 1 ]? =? ( int )?(( 1? +?Math.sin ( r ))? *?centerY ) ;
    ?????? pos?=? ( pos?+?POINTS?/? 2 )? %?POINTS;
    ???? }
    ???? Display?display?=?Display.getCurrent () ;
    ???? gc.setFillRule ( fillRuleCb.getSelectionIndex ()? !=? 0? ??SWT.FILL_WINDING
    ???????? :?SWT.FILL_EVEN_ODD ) ;
    ???? gc.setBackground ( display.getSystemColor ( SWT.COLOR_WHITE )) ;
    ???? gc.fillPolygon ( radial ) ;
    ???? gc.drawPolygon ( radial ) ;
    ?? }
    }

    /*******************************************************************************
    ? *?Copyright?(c)?2000,?2005?IBM?Corporation?and?others.?All?rights?reserved.
    ? *?This?program?and?the?accompanying?materials?are?made?available?under?the
    ? *?terms?of?the?Eclipse?Public?License?v1.0?which?accompanies?this?distribution,
    ? *?and?is?available?at?http://www.eclipse.org/legal/epl-v10.html
    ? *?
    ? *?Contributors:?IBM?Corporation?-?initial?API?and?implementation
    ? ******************************************************************************/
    class? BlackHoleTab? extends? GraphicsTab? {

    ?? int? size?=? 1 ;

    ?? public? BlackHoleTab ( GraphicsExample?example )?{
    ???? super ( example ) ;
    ?? }

    ?? public? String?getText ()?{
    ???? return? GraphicsExample.getResourceString ( "BlackHole" ) ;? //$NON-NLS-1$
    ?? }

    ?? public? boolean? isAnimated ()?{
    ???? return?true ;
    ?? }

    ?? public? void? next ( int? width,? int? height )?{
    ???? if? ( size?>?width?*? 3? /? 2 )
    ?????? size?=? 0 ;
    ???? else
    ?????? size?+=? 10 ;
    ?? }

    ?? public? void? paint ( GC?gc,? int? width,? int? height )?{
    ???? Display?display?=?Display.getCurrent () ;
    ???? gc.setBackground ( display.getSystemColor ( SWT.COLOR_BLACK )) ;
    ???? gc.fillOval (( width?-?size )? /? 2 ,? ( height?-?size )? /? 2 ,?size,?size ) ;
    ?? }
    }

    /*******************************************************************************
    ? *?Copyright?(c)?2000,?2005?IBM?Corporation?and?others.?All?rights?reserved.
    ? *?This?program?and?the?accompanying?materials?are?made?available?under?the
    ? *?terms?of?the?Eclipse?Public?License?v1.0?which?accompanies?this?distribution,
    ? *?and?is?available?at?http://www.eclipse.org/legal/epl-v10.html
    ? *?
    ? *?Contributors:?IBM?Corporation?-?initial?API?and?implementation
    ? ******************************************************************************/
    class? IntroTab? extends? GraphicsTab? {

    ?? Font?font;

    ?? Image?image;

    ?? Random?random?=? new? Random () ;

    ?? float? x,?y;

    ?? float? incX?=? 10.0f ;

    ?? float? incY?=? 5.0f ;

    ?? int? textWidth,?textHeight;

    ?? String?text?=? "SWT" ;

    ?? public? IntroTab ( GraphicsExample?example )?{
    ???? super ( example ) ;
    ?? }

    ?? public? void? dispose ()?{
    ???? if? ( image?!=? null )
    ?????? image.dispose () ;
    ???? image?=? null ;
    ???? if? ( font?!=? null )
    ?????? font.dispose () ;
    ???? font?=? null ;
    ?? }

    ?? public? String?getCategory ()?{
    ???? return? GraphicsExample.getResourceString ( "Introduction" ) ;? //$NON-NLS-1$
    ?? }

    ?? public? String?getText ()?{
    ???? return? GraphicsExample.getResourceString ( "SWT" ) ;? //$NON-NLS-1$
    ?? }

    ?? public? boolean? isAnimated ()?{
    ???? return?true ;
    ?? }

    ?? public? void? next ( int? width,? int? height )?{
    ???? x?+=?incX;
    ???? y?+=?incY;
    ???? float? random?=? ( float )? Math.random () ;
    ???? if? ( x?+?textWidth?>?width )?{
    ?????? x?=?width?-?textWidth;
    ?????? incX?=?random?*?-width?/? 16? -? 1 ;
    ???? }
    ???? if? ( x?<? 0 )?{
    ?????? x?=? 0 ;
    ?????? incX?=?random?*?width?/? 16? +? 1 ;
    ???? }
    ???? if? ( y?+?textHeight?>?height )?{
    ?????? y?=? ( height?-?textHeight )? -? 2 ;
    ?????? incY?=?random?*?-height?/? 16? -? 1 ;
    ???? }
    ???? if? ( y?<? 0 )?{
    ?????? y?=? 0 ;
    ?????? incY?=?random?*?height?/? 16? +? 1 ;
    ???? }
    ?? }

    ?? public? void? paint ( GC?gc,? int? width,? int? height )?{
    ???? if? ( !example.checkAdvancedGraphics ())
    ?????? return ;
    ???? Display?display?=?Display.getCurrent () ;
    ???? if? ( image?==? null )?{
    ?????? image?=?example.loadImage ( Display.getCurrent () ,? "irmaos.jpg" ) ;
    ?????? Rectangle?rect?=?image.getBounds () ;
    ?????? FontData?fd?=?display.getSystemFont () .getFontData ()[ 0 ] ;
    ?????? font?=? new? Font ( display,?fd.getName () ,?rect.height?/? 4 ,?SWT.BOLD ) ;
    ?????? gc.setFont ( font ) ;
    ?????? Point?size?=?gc.stringExtent ( text ) ;
    ?????? textWidth?=?size.x;
    ?????? textHeight?=?size.y;
    ???? }
    ???? Path?path?=? new? Path ( display ) ;
    ???? path.addString ( text,?x,?y,?font ) ;
    ???? gc.setClipping ( path ) ;
    ???? Rectangle?rect?=?image.getBounds () ;
    ???? gc.drawImage ( image,? 0 ,? 0 ,?rect.width,?rect.height,? 0 ,? 0 ,?width,?height ) ;
    ???? gc.setClipping (( Rectangle )? null ) ;
    ???? gc.setForeground ( display.getSystemColor ( SWT.COLOR_BLUE )) ;
    ???? gc.drawPath ( path ) ;
    ?? }
    }


    posted on 2006-05-18 09:29 大雁北飛 閱讀(1869) 評論(3)  編輯  收藏

    評論

    # re: java swt實現的2D效果(附代碼)!   回復  更多評論   

    swt 沒人用的,還是要用swing
    2006-05-22 10:59 | 天之北

    # re: java swt實現的2D效果(附代碼)!   回復  更多評論   

    http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=200648231527
    Java數據報之失序和丟包

    http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=200647215416
    Java新手學習:IIS6和Tomcat5的整合

    http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=200647172615
    Jakarta-Tomcat 簡明中文版用戶指南
    2006-05-25 19:47 | pc

    # re: java swt實現的2D效果(附代碼)!   回復  更多評論   

    用swt的人現在要比用swing要多吧,支持swt
    2006-09-16 03:18 | JRobot

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久久亚洲AV成人片| 毛片基地免费观看| 在线观看亚洲成人| 免费看片免费播放| 亚洲第一页综合图片自拍| 99久久亚洲精品无码毛片| 久久精品成人免费网站| 亚洲AV日韩AV永久无码下载| 中国一级全黄的免费观看| 亚洲人成人无码网www电影首页| 中文在线观看国语高清免费| 亚洲AV无码成人精品区蜜桃| 老汉精品免费AV在线播放| 亚洲女人18毛片水真多| 成人爽A毛片免费看| 久久精品亚洲日本波多野结衣| 国产伦精品一区二区三区免费下载 | 亚洲一区二区三区在线观看蜜桃| 亚洲人成电影网站免费| 亚洲成在人线在线播放无码 | 在线a级毛片免费视频| 亚洲精品国产首次亮相| 亚洲精品第一国产综合境外资源| 国产高潮久久免费观看| 无码乱人伦一区二区亚洲一| 国产成在线观看免费视频| 色屁屁在线观看视频免费| 国产成人亚洲精品青草天美| 四虎免费影院ww4164h| 国产天堂亚洲精品| 久久精品国产精品亚洲艾草网| 国产人在线成免费视频| 免费人成网站永久| 亚洲视频2020| 日本大片在线看黄a∨免费| 巨胸狂喷奶水视频www网站免费| 亚洲成人黄色在线观看| mm1313亚洲精品国产| 99re免费在线视频| 色噜噜狠狠色综合免费视频| 亚洲日本中文字幕|