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

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

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

    在戰(zhàn)牛刀(不停震動(dòng)的Dialog)

    效果圖沒滴..因?yàn)樗煌U饎?dòng)=.= 我截下來只是個(gè)靜態(tài)圖片
    所以就不發(fā)了...
    運(yùn)行效果自己看

     

    package DZDialog;

    import java.awt.Point;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JDialog;
    import javax.swing.JOptionPane;
    import javax.swing.Timer;

    public class DialogEarthquakeCenter extends Object implements Runnable{

      
    // 在這里我把常量說一下..下面計(jì)算時(shí)你們自己看..我就不一個(gè)一個(gè)說了
             
    //Shake Distance 是搖動(dòng)距離的意思
             
    //Shake Cycle 是搖動(dòng)周期的意思
             
    //Shake Duration  搖動(dòng)期間
             
    //***** Upadate 這個(gè)看不懂的話 下面的你就別看了
                public static final int SHAKE_DISTANCE = 10;
                
    public static final double SHAKE_CYCLE = 50;
                
    public static final int SHAKE_DURATION = 1000;
                
    public static final int SHAKE_UPDATE = 2;

                
    private JDialog dialog;
                
    private Point naturalLocation;
                
    private long startTime;
                
    private Timer shakeTimer;
                
                
    private final double TWO_PI = Math.PI * 2.0;

                
    public DialogEarthquakeCenter (JDialog d) {
                    dialog 
    = d;
                }


                
    public void startShake( ) {
                    naturalLocation 
    = dialog.getLocation( );
                    startTime 
    = System.currentTimeMillis( );
                    shakeTimer 
    =
                       
    new Timer(SHAKE_UPDATE,
                                 
    new ActionListener( ) {

                                  
    public void actionPerformed (ActionEvent e) {    
                                   
    //將當(dāng)前系統(tǒng)的系統(tǒng)時(shí)間 以毫秒的形式付給elapsed
                                      long elapsed = System.currentTimeMillis();
                                      
                                      
    double waveOffset = (elapsed % SHAKE_CYCLE) /
                                          SHAKE_CYCLE; 
                                      
    double angle = waveOffset * TWO_PI;

                                      
    int shakenX = (int) ((Math.sin (angle) *
                                                            SHAKE_DISTANCE) 
    +
                                                           naturalLocation.x); 
                                      dialog.setLocation (shakenX, naturalLocation.y);               
                                      dialog.repaint( );

                                      
    if (elapsed >= SHAKE_DURATION)                                                  stopShake( );
                                  }

                             }

                             );
                shakeTimer.start( );
                
                
    //如果不開下面這個(gè)線程的話 窗口只震動(dòng)一次
                
    //如果有這個(gè)線程 就是Thread.sleep(100)運(yùn)行一次Timer
                
    //每運(yùn)行Timer一次 窗口就會(huì)震動(dòng)一次 我讓線程while(true)就是死循環(huán) 讓他不停的震動(dòng)
                Thread t = new Thread(this);
                t.start();
            }


            
    public void stopShake( ) {
                shakeTimer.stop( );
                dialog.setLocation (naturalLocation);
                dialog.repaint( );
            }


            
            
    public static void main (String[] args) {
                JOptionPane pane 
    =
                    
    new JOptionPane ("這幾天.心情很郁悶..汶川的事.讓我沉靜了很久..這到底是誰的錯(cuò)?" +'\n'+
                               
    "難道老天沒有感情嗎??.震吧..震吧." +'\n'+
                               
    "連我的Swing程序也一起震了吧",
                                     JOptionPane.ERROR_MESSAGE, JOptionPane.OK_OPTION);
                
                JDialog d 
    = pane.createDialog (null"痛心的汶川");
                
                DialogEarthquakeCenter dec 
    = new 

                DialogEarthquakeCenter (d);
                d.pack( );
                d.setModal (
    false);
                d.setVisible(
    true);
                dec.startShake( );

                
    // wait (forever) for a non-null click and then quit
                while (pane.getValue( ) == JOptionPane.UNINITIALIZED_VALUE ) 
                   
    try { Thread.sleep(100); } 
                   
    catch (InterruptedException ie) {}
          
          }
     
                   System.exit(
    0); 
                }


      
    public void run() {
       
    while(true){
        
    try{
        Thread.sleep(
    100);
        }
    catch(Exception e){
        }

        shakeTimer.start();
       }

      }
     

    }



     

    posted on 2008-05-20 13:10 相信 閱讀(499) 評(píng)論(2)  編輯  收藏 所屬分類: Swing文章

    評(píng)論

    # re: 在戰(zhàn)牛刀(不停震動(dòng)的Dialog) 2011-03-24 10:34 venusdrogon

    樓主,我發(fā)現(xiàn)我開始崇拜你了   回復(fù)  更多評(píng)論   

    # re: 在戰(zhàn)牛刀(不停震動(dòng)的Dialog) 2011-03-24 10:35 相信

    我只是一只在飛翔的菜鳥....  回復(fù)  更多評(píng)論   

    <2011年3月>
    272812345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    不顯示applet

    常用鏈接

    留言簿(16)

    我參與的團(tuán)隊(duì)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊(cè)

    swingchina 專業(yè)搞Swing的網(wǎng)站

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲高清免费在线观看| 18禁超污无遮挡无码免费网站| 久久久久亚洲AV无码专区首| 国产片免费在线观看| 国产1000部成人免费视频| 怡红院免费全部视频在线视频| 激情无码亚洲一区二区三区 | 亚洲精品乱码久久久久久蜜桃图片| 亚洲AV人人澡人人爽人人夜夜| 亚洲国产精品成人AV无码久久综合影院| 一二三四影视在线看片免费 | 国产成人亚洲精品影院| 国产免费av片在线无码免费看| 无码人妻一区二区三区免费| 91制片厂制作传媒免费版樱花| 日批视频网址免费观看| 一级黄色片免费观看| 青青视频免费在线| 亚洲av午夜国产精品无码中文字 | 久艹视频在线免费观看| 你是我的城池营垒免费看| 男人j进女人p免费视频| 理论片在线观看免费| 国产青草亚洲香蕉精品久久| 亚洲成av人片在线天堂无| 亚洲综合无码无在线观看| 亚洲无mate20pro麻豆| 亚洲av日韩av综合| 亚洲国产成人精品无码一区二区 | 久久福利青草精品资源站免费| 国产高清视频免费在线观看| 一级特黄a大片免费| 一级特黄aaa大片免费看| 国产男女爽爽爽免费视频| 一个人看的hd免费视频| 国产免费人成视频尤勿视频| a级毛片100部免费观看| 未满十八18禁止免费无码网站 | 国产亚洲视频在线播放| 亚洲午夜久久久久久噜噜噜| 亚洲AV无码专区在线播放中文|