Diễn Đàn » Hướng Dẫn Lập trình

Đoạn code Java: tạo một bức ảnh có thể cuộn được

0 trả lời, 556 lượt xem — Trang 1 / 1
Đoạn code Java: tạo một bức ảnh có thể cuộn được
JDK 1.1 sử dụng ScrollPane
  

import java.applet.*;

   import java.awt.*;

   public class apptest extends Applet

   {

      Canvas c;

      ScrollPane s;

      public void init()

      {

         setLayout(new BorderLayout());

          s = new ScrollPane();

         s.setSize(100, 100);

         add("Center", s);

          c = new myCanvas();

         c.setSize(500, 300);

         s.add(c);

      }

      class myCanvas extends Canvas

      {

          Image buffImage;

         Graphics offscreen;

         boolean initDone = false;

          myCanvas()

         {

             super();

          }

         public void paint(Graphics g)

         {

             if (!initDone)

                 initpaint(g);

              else

                 g.drawImage(buffImage, 0, 0, this);

         }

          public void update(Graphics g)

         {

             g.drawImage(buffImage, 0, 0, this);

          }

         public void initpaint(Graphics g)

         {

              try

              {

                 buffImage = this.createImage(500, 500);

                 offscreen = buffImage.getGraphics();

                offscreen.setColor(Color.black);

                 offscreen.fillRect(0, 0, 500, 500);

                 offscreen.setColor(Color.white);

                 offscreen.setFont(new Font( "Courier",

                                                Font.ITALIC, 42));

                 offscreen.drawString("Hello World!", 0, 50);

                initDone = true;

                 g.drawImage(buffImage, 0, 0, this);

              }

             catch (Exception e)

             {

                 e.printStackTrace();

              }

         }

      }

   }

 

JDK 1.0.2 sử dụng một bức ảnh với Scrollbar

 


  import java.applet.*;

   import java.awt.*;

   public class apptest extends Applet

   {

      ScrollCanvas sc;

      public void init()

      {

          setLayout(new FlowLayout());

         sc = new ScrollCanvas ( 150, 150, 300,200, Color.black,

                                     Color.white);

         add(sc);

      }

      public boolean handleEvent(Event e)

      {

          if (e.target instanceof Scrollbar)

          {

              switch (e.id)

              {

                 case Event.SCROLL_ABSOLUTE:

                 case Event.SCROLL_PAGE_DOWN:

                case Event.SCROLL_PAGE_UP:

                 case Event.SCROLL_LINE_UP:

                 case Event.SCROLL_LINE_DOWN:

                     sc.redraw();

                 return true;

             }

          }

         return super.handleEvent(e);

      }

   }

   class ScrollCanvas extends Panel

   {

      int vw, vh;

      int rw, rh;

      Color b, f;

      myCanvas c;

      Scrollbar sv, sh;

      ScrollCanvas( int vw1, int vh1, int rw1, int rh1, Color b1,

                        Color f1)

      {

         super();

          vw = vw1; vh = vh1;

         rh = rh1; rw = rw1;

         b  = b1;  f  = f1;

          int ScrollIncrement = 10;

         setLayout(new BorderLayout());

         c = new myCanvas(vw, vh, rw, rh, b ,f);

          add("West", c);

         sv = new Scrollbar(Scrollbar.VERTICAL, 0, ScrollIncrement,

                              0, rh);

         add("East", sv);

         sh = new Scrollbar(  Scrollbar.HORIZONTAL, 0, ScrollIncrement,

                              0, rw);

         add("South", sh);

      }

      public void redraw()

      {

          int y = sv.getValue();

         int x = sh.getValue();

         c.draw(x, y);

      }

      public Dimension minimumSize()

      {

          return new Dimension(vw, vh);

      }

      public Dimension preferredSize()

      {

          return new Dimension(vw, vh);

      }

   }

   class myCanvas extends Canvas

   {

      int vw, vh;

      int rw, rh;

      Color b, f;

      int x, y;

      Image buffImage;

      Graphics offscreen;

      boolean initDone;

      myCanvas( int vw1, int vh1, int rw1, int rh1, Color b1,

                 Color f1)

      {

          super();

         vw = vw1; vh = vh1;

         rh = rh1; rw = rw1;

          b  = b1;  f  = f1;

         initDone = false;

         repaint();

      } 

      public void paint(Graphics g)

      {

          if (!initDone)

              initpaint(g);

         else

             g.drawImage(buffImage, x, y,  this);

      } 

      public void update(Graphics g)

      {

          g.drawImage(buffImage, x, y,  this);

      }

      public void initpaint(Graphics g)

      {

          try

          {

              buffImage = this.createImage(rw, rh);

             offscreen = buffImage.getGraphics();

             offscreen.setColor(b);

              offscreen.fillRect(0, 0, rw, rh);

              offscreen.setColor(f);

             offscreen.setFont(new Font("Courier", Font.ITALIC, 42));

             offscreen.drawString("Hello World!", 0, 50);

              initDone = true;

              g.drawImage(buffImage, 0, 0, this);

         }

         catch (Exception e)

          {

              System.out.println("oups...");

         }

      }

      public void draw (int x1, int y1) 

      {

          x = -x1;

         y = -y1;

         update(getGraphics());

      }

      public Dimension minimumSize()

      {

          return new Dimension(vw, vh);

      }

      public Dimension preferredSize()

      {

         return new Dimension(vw, vh);

      }

   }

Trích từ “Thủ thuật lập trình Java”
Đăng nhập để trả lời
0