隨筆 - 63  文章 - 0  trackbacks - 0
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           Graphics類與圖形繪制
          Componentp.getGraphics方法與Grahpics類

          Graphics.drawLine(int x1,int y1,int x2, int y2)方法;
          Graphics.drawStringString str,int x,int y)方法;
          Graphics.drawSting方法的坐標參數是以坐下方為參考點的;


          例:

          package drawline;

          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Frame;
          import java.awt.Graphics;
          import java.awt.event.MouseAdapter;
          import java.awt.event.MouseEvent;
          import java.awt.event.WindowAdapter;
          import java.awt.event.WindowEvent;


          public class DrawLine extends Frame {

           private static final long serialVersionUID = 9004940250333651314L;

           public DrawLine()
           {
            this.addWindowListener(new WindowAdapter()
               {
                public void windowClosing(WindowEvent e) {
                 dispose();
                 System.exit(0);
                }
             
               });
            
            this.addMouseListener(new MouseAdapter()
               {
                
                int orgX;
                int orgY;
                public void mousePressed(MouseEvent e)
                {
                 orgX = e.getX();
                 orgY = e.getY();
                 
                }
                public void mouseReleased(MouseEvent e)
                {
                 Graphics g = getGraphics();
                 g.setColor(Color.RED);
                 g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));
                 g.drawString(orgX + "," + orgY,orgX,orgY);
                 g.drawString(e.getX() + "," + e.getY(), e.getX(),e.getY());
                 g.drawLine(orgX, orgY, e.getX(),e.getY());
                 
                }//為什么用getGraphics().setColor(Color.RED)是不用導java.awt.Graphics包
                
                
               });
           }

           public static void main( String[] args) {
            System.out.println("String DrawLine");
            DrawLine mainFrame = new DrawLine();
            mainFrame.setSize(400,400);
            mainFrame.setTitle("Drawline");
            mainFrame.setVisible(true);
            
            
           }
          }

          組件重建的處理:

          1 組件重繪的原理  曝光
          2 paint(Graphics g)的作用

          AWT組件重繪路線:
          AWT Thread ->paint() ->AWT Thread
          repaint()+AWT Thread ->update(清除組件表面內容調用paint()方法)->paint();

          例:
          package drawline;

          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Frame;
          import java.awt.Graphics;
          import java.awt.event.MouseAdapter;
          import java.awt.event.MouseEvent;
          import java.awt.event.WindowAdapter;
          import java.awt.event.WindowEvent;
          import java.util.Enumeration;
          import java.util.Vector;


          public class DrawLine extends Frame
          {
           int orgX;
           int orgY;
           int endX;
           int endY;
           Vector<MyLine> vLines = new Vector<MyLine>();
           
           public void paint(Graphics g)
           {
            g.setColor(Color.RED);
            g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));
            Enumeration<MyLine> e = vLines.elements();
            while(e.hasMoreElements())
            {
             MyLine line = (MyLine)e.nextElement();
            line.drawMe(g);
            }
            //g.drawLine(orgX, orgY, endX, endY);
           }
           private static final long serialVersionUID = 9004940250333651314L;

           public DrawLine()
           {
            
            this.addWindowListener(new WindowAdapter()
               {
                public void windowClosing(WindowEvent e) {
                 dispose();
                 System.exit(0);
                }
             
               });
            
            this.addMouseListener(new MouseAdapter()
               {
                
                
                public void mousePressed(MouseEvent e)
                {
                 orgX = e.getX();
                 orgY = e.getY();
                 
                }
                public void mouseReleased(MouseEvent e)
                {
                 endX = e.getX();
                 endY = e.getY();
                 /*Graphics g = getGraphics();
                 g.setColor(Color.RED);
                 g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));
                 g.drawString(orgX + "," + orgY,orgX,orgY);
                 g.drawString(e.getX() + "," + e.getY(), e.getX(),e.getY());
                 g.drawLine(orgX, orgY, e.getX(),e.getY());
                 */
                 vLines.add(new MyLine(orgX,orgY,endX,endY));
                 repaint();
                }//為什么用getGraphics().setColor(Color.RED)是不用導java.awt.Graphics包
                //Enumeration<MyLine>???????????????????????????
                
                
               });
           }

           public static void main( String[] args) {
            System.out.println("String DrawLine");
            DrawLine mainFrame = new DrawLine();
            mainFrame.setSize(400,400);
            mainFrame.setTitle("Drawline");
            mainFrame.setVisible(true);
            
            
           }
          }


          package drawline;

          import java.awt.Graphics;


          public class MyLine
          {
           private int orgX;
           private int orgY;
           private int endX;
           private int endY;
           public MyLine(int orgX, int orgY, int endX, int endY)
           {
            this.orgX = orgX;
            this.orgY = orgY;
            this.endX = endX;
            this.endY = endY;
           }
           
           
           public void drawMe(Graphics g)
           {
            System.out.println(orgX + "," + orgY + " "+endX + "," + endY);
            g.drawString(orgX + "," + orgY,orgX,orgY);
            g.drawString(endX + "," + endY,endX,endY);
            g.drawLine(orgX, orgY, endX, endY);
           }
           
           

          }

          posted on 2008-08-10 07:51 lanxin1020 閱讀(269) 評論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 锡林浩特市| 德阳市| 蚌埠市| 长兴县| 比如县| 潢川县| 邳州市| 沁水县| 东宁县| 蛟河市| 通州市| 宜昌市| 阿城市| 肃宁县| 波密县| 新丰县| 安阳县| 翁牛特旗| 博兴县| 辽阳县| 盈江县| 北安市| 黔江区| 鄂托克前旗| 柏乡县| 萍乡市| 西畴县| 叶城县| 东至县| 汉寿县| 龙门县| 玛多县| 观塘区| 昔阳县| 涟水县| 杭锦后旗| 交口县| 屏东市| 独山县| 麻城市| 明水县|