<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java究竟怎么玩?

      天地程序已定棋,人間大數待變局

        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理
          很多主一聽說Java界面,一水的頭大外帶血壓高,兄弟我倒覺得沒什么必要。
          
          其實Java這東西吧,就簡便性和其初衷而言,真他媽就在GUI 這地界是有優勢的,單就其2D界面開發的易用性來說,借用《地下交通站》里黑瞎子——黑藤太君罵賈隊長的話來說“全中國,不,全東亞,還能找出你這樣空前絕后的臉嗎?”。所以它不普及,無外兩點,1.搞Java的多半不指著這東西混飯吃,比如兄弟目前還被逼用SSH(Struts+Spring+Hibernate)混飯吃。2.效率低,為了改變本來AWT的可移植性而開發Swing,結果搞得層次過多,效率低下,反倒是走回AWT老路的SWT比較吃香,害得SUN從1.6開始又給AWT擴充新類,誰讓Swing玩底層要靠AWT的……

        兄弟不才,大家也碰上個愣主,我就準備以閑扯的方式鼓搗鼓搗這爹不親娘不愛的玩意。

        既然提到UI,那怎么也得有圖像吧?圖像,再次也得弄張圖來操作吧?所以咱爺們就先從Java圖像的加載入手,操練起來~

      package org.test;

      import java.awt.Canvas;
      import java.awt.Color;
      import java.awt.Frame;
      import java.awt.Graphics;
      import java.awt.Image;
      import java.awt.Toolkit;
      import java.awt.event.MouseAdapter;
      import java.awt.event.MouseEvent;
      import java.net.URL;

      /**
       * <p>
       * Title: 史上最扯Java圖形繪制(J2SE)教程之一,圖像變換。
       * </p>
       * <p>
       * Description:圖像變換
       * </p>
       * <p>
       * Copyright: Copyright (c) 2007
       * </p>
       *
       * @author chenpeng
       * @email:ceponline@yahoo.com.cn
       * @version 0.1
       */
      public class SimpleAnime extends Frame {

          /**
           * 這個例子我用AWT來講解,實際上,我們都知道使用Swing時,對圖 像繪制上有很多的優化,但是在AWT中,這些都是要我們手動來做得,
           * 所以入門我還是以AWT開始。(其實大家都知道,組件名加個J就變 Swing了……幾乎不用改別的。)
           */

          private static final long serialVersionUID = 1L;

          // 用于存儲圖片
          Image act;

          // 俗稱的帆布啦,做手機開發的話很常見
          Canvas canvas = new Canvas() {

              private static final long serialVersionUID = 1L;

              /**
               * 繪制圖像,直接調用update方法(順便說一下,若以paint調用update,
               * 再用update調用paint,會出現很好玩的事。^^)
               */
              public void paint(Graphics g) {
                  update(g);
              }

              /**
               * 此方法僅在在發生變更時繪制圖形
               */
              public void update(Graphics g) {
                  // 參數分別為加載圖像,所在Graphics上的left,所在top,圖像width,圖像height,目標對象
                  g.drawImage(act, getWidth() / 2 - act.getWidth(null) / 2,
                          getHeight() / 2 - act.getHeight(null) / 2, act
                                  .getWidth(null), act.getHeight(null), this);
              }
          };

          /**
           * 簡單動畫的構造
           *
           */
          public SimpleAnime() {
              setTitle("圖像變換");
              setSize(400, 400);
              // 設定背景為黑色
              setBackground(Color.BLACK);
              // 直接以class路徑讀取圖片資源
              URL imageUrl = getClass().getResource("/image/act.jpg");
              // 獲取image圖像實體
              act = Toolkit.getDefaultToolkit().createImage(imageUrl);
              // 加載帆布作為背景
              add(canvas);
              class AnimeMouseListener extends MouseAdapter {
                  // 鼠標進入變更
                  public void mouseEntered(MouseEvent e) {
                      // 順便說一下,水平反轉圖的效果,是可以用代碼做到的,后面講解。
                      URL imageUrl = getClass().getResource("/image/act0.jpg");
                      act = Toolkit.getDefaultToolkit().createImage(imageUrl);
                      canvas.repaint();
                  }

                  // 鼠標離開變更
                  public void mouseExited(MouseEvent e) {
                      URL imageUrl = getClass().getResource("/image/act.jpg");
                      act = Toolkit.getDefaultToolkit().createImage(imageUrl);
                      canvas.repaint();
                  }
              }
              //在帆布上添加鼠標監聽
              canvas.addMouseListener(new AnimeMouseListener());
          }

          /**
           * 主函數
           *
           * @param args
           */
          public static void main(String[] args) {
              // 實例化本類
              SimpleAnime sa = new SimpleAnime();
              // 顯示窗體
              sa.setVisible(true);
          }
      }
      (鼠標移入)


      (鼠標在外)


      這他媽才幾個字母,拋除我那些狗屁都未必同通得了的注釋,不到倆半字,這日本的花姑娘(正經說一句,這是月姬的同人圖……)就給小爺跳上舞了,那位缺德主要加個死循環的線程進去,嘿,不趕上停電死機的,還就真格停不下來了。

      閑得無聊,喪心病狂的我給加上個線程。

      package org.test;

      import java.awt.Canvas;
      import java.awt.Color;
      import java.awt.Frame;
      import java.awt.Graphics;
      import java.awt.Image;
      import java.awt.Toolkit;
      import java.net.URL;
      /**
       * @author chenpeng
       * @email:ceponline@yahoo.com.cn
       * @version 0.1
       */
      public class SimpleAnime0 extends Frame {

          private static final long serialVersionUID = 1L;

          Image act1;

          Image act2;

          // 是否令圖像移動

          boolean actMoving = false;

          // 初始圖像編號

          int actPhase = 1;

          Canvas c = new Canvas() {

              private static final long serialVersionUID = 1L;

              /**
               * 繪制圖像,直接調用update方法(順便說一下,若以paint調用update, 再用update調用paint,會出現很好玩的事。^^)
               */
              public void paint(Graphics g) {
                  update(g);
              }

              /**
               * 此方法僅在在發生變更時繪制圖形
               */
              public void update(Graphics g) {
                  if (actMoving) {
                      if (actPhase == 1) {
                          g
                                  .drawImage(act1, getWidth() / 2
                                          - act1.getWidth(null) / 2, getHeight() / 2
                                          - act1.getHeight(null) / 2, act1
                                          .getWidth(null), act1.getHeight(null), this);
                      } else {
                          g
                                  .drawImage(act2, getWidth() / 2
                                          - act2.getWidth(null) / 2, getHeight() / 2
                                          - act2.getHeight(null) / 2, act2
                                          .getWidth(null), act2.getHeight(null), this);
                      }
                  }
              }
          };

          /**
           * 簡單動畫的構造
           *
           */
          public SimpleAnime0(boolean isRun) {
              actMoving = isRun;
              setTitle("圖像變換");
              setSize(400, 400);
              // 設定背景為黑色
              setBackground(Color.BLACK);
              //這只是一個圖像加載的演示,我們完全可以定義一個Image數組,然后動態加載
              //做成動畫播放。
              URL imageUrl = getClass().getResource("/image/act.jpg");
              act1 = Toolkit.getDefaultToolkit().createImage(imageUrl);
              imageUrl = getClass().getResource("/image/act0.jpg");
              act2 = Toolkit.getDefaultToolkit().createImage(imageUrl);
              add(c);

              /**
               * 順便介紹一下,在Swing下有Timer類,可以設定運算周期循環觸發事件。 大體寫法如下,不過很多人還是愿意用線程……
               *
               * class TimerListener implements ActionListener{ public void
               * actionPerformed(ActionEvent e){ if(!actMoving) return; actPhase =
               * (actPhase == 1) ? 2 : 1; canvas.repaint(); } } javax.swing.Timer t =
               * new javax.swing.Timer(200,new TimerListener()); t.start();
               */

              Thread t = new Thread(new Timer());
              t.start();
          }

          /**
           * 事件循環處理線程
           *
           * @author chenpeng
           */
          class Timer implements Runnable {
              public void run() {
                  while (true) {
                      if (!actMoving)
                          return;
                      actPhase = (actPhase == 1) ? 2 : 1;
                      c.repaint();
                      try {
                          Thread.sleep(200);
                      } catch (InterruptedException e) {

                          e.printStackTrace();
                      }
                  }
              }
          }

          /**
           * 主函數
           *
           * @param args
           */
          public static void main(String[] args) {
              // 實例化本類,并觸發循環事件
              SimpleAnime0 sa = new SimpleAnime0(true);
              // 顯示窗體
              sa.setVisible(true);
          }
      }
      posted on 2007-09-14 22:08  cping  閱讀(670)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲色成人网站www永久四虎| 国产精品久久精品国产| 激情久久av一区二区三区| 国产精品午夜福利合集| 92精品国产自产在线观看481页| 亚洲欧美偷国产日韩| 成人免费av在线观看| 河北真实伦对白精彩脏话| 人妻在线中文字幕| 亚洲日本va午夜中文字幕久久 | 3d无码纯肉动漫在线观看| 国产69精品久久久久99尤物| 亚洲色av天天天天天天| 亚洲成a人片在线视频| 在线观看亚洲欧美日本| 国产又色又爽无遮挡免费动态图 | 亚洲三区在线观看无套内射 | 国产精品中文字幕在线看| 国产精成人品日日拍夜夜| 日本免费最新高清不卡视频| 国产偷国产偷亚洲高清午夜| 亚洲AV日韩AV综合在线观看| 久热这里只有精品视频3| 久久ww精品w免费人成| 亚洲中文字幕综合小综合| 亚洲精品一区二区妖精| 日本免费最新高清不卡视频 | 亚洲蜜桃av一区二区三区| 久久精品国产精品第一区| 国产精久久一区二区三区| 精品黄色av一区二区三区| 一区二区福利在线视频| 亚洲欧洲日产国码AV天堂偷窥| 色综合欧美亚洲国产| 色综合AV综合无码综合网站| 人人人澡人人肉久久精品| 亚洲午夜性猛春交xxxx| 黑人大荫道bbwbbb高潮潮喷| 午夜成人精品福利网站在线观看| 久久人妻无码一区二区| 国产在线精品一区二区三区不卡|