⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 right6_3_2.htm

📁 清华大学JAVA教程
💻 HTM
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">  <tr>     <td valign="top">       <table width="94%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF">        <tr>          <td valign="top">             <p> <span class="pt9-black"> <br>              <img src="../../../images/tu/ch06/6_3_2.gif" width="391" height="296">               <br>              <br>                Applet程序中所采用的AWT的绘图机制主要涉及三个方法:paint()方法、update()方法和repaint()方法,update()方法和paint()方法都有一个Graphics类参数。Graphics是画图的关键,它可以支持两种绘图:一种是基本的绘图,如:画线、矩形、圆等;另一种是画图象,主要用于动画制作。<br>              <br>                要进行绘图,首先要找到一个Graphics类的对象。update()方法和paint()方法所传递的参数都是Graphics类的对象,因此主要是通过重载它们来进行绘图,这是在动画程序中经常使用的方法。我们还可以通过getGraphics()方法得到一个Graphics类的对象,这个对象和update()方法和paint()方法中所传递的对象一样,都是该成员所对应的Graphics类的对象。得到了Graphics类的对象,就可使用各种绘图方法。<br>              <br>                Graphics中提供的图形绘制方法有:<br>                paint( ) <font color="339900">//进行绘图的具体操作,必须有程序员重写</font><br>                update( )<font color="339900"> //用于更新图形,先清除背景、前景,再调用paint()</font><br>                repaint( ) <font color="339900">/*用于重绘图形,在组件外形发生变化,即大小改变或位置移动时,repaint(               )方法立即被系统自动调用,而实际上repaint()方法是自动调用update()方法*/</font></span></p>            <p class="pt9-black">  下面的方法支持基本的绘图和画图像:<br>                void drawLine( )<br>                void drawArc( )<br>                void drawPolygon( )<br>                void drawRect( )<br>                void drawRoundRect( )<br>                void fill3DRect( )<br>                void fillOval( )<br>                java.awt.Graphics类<br>                <br>              输出文字:<br>                void drawBytes( )<br>                void drawChars( )<br>                void drawString( )</p>            <p class="pt9-black">  Applet 的AWT绘制举例如下:<br>                <br>              <span class="pt9-black"><img src="../../../images/html/liti.gif" width="38" height="38" align="absbottom" title="例题" ></span>               <font color="000099">例6.10</font><br>                import java.awt.*;<br>                import java.awt.event.*;<br>                import java.applet.*;<br>                public class ArcTest extends Applet implements WindowListener               {<br>                   ArcControls controls;<br>                   pulic void init(){ <font color="339900">//Applet的入口方法</font><br>                     setLayout(new BorderLayout());<br>                     ArcCanvas c=new ArcCanvas(); <br>                </p>            <p class="pt9-black">      Add(&quot;Center&quot;,c);<br>                   add(&quot;South&quot;,controls=new ArcControls(C));<br>                }<br>                public void start(){ <br>                   controls.setEnabled(true); <font color="339900">//激活controls</font><br>                }<br>                public void stop(){<br>                   controls.setEnabled(false); <br>                }<br>                public void windowActivated(WindowEvent e){ } <font color="339900"><br>                          //重写WindowListener的方法</font><br>                public void windowClosed(WindowEvent e){ } <font color="339900"><br>                          //重写WindowListener的方法</font><br>                public void windowClosing(WindowEvent e){ <font color="339900"><br>                          //重写WindowListener的方法</font><br>                   System.exit(0); }</p>            <p class="pt9-black">  public void windowDeactivated(WindowEvent e){}               <font color="339900"><br>                          //重写WindowListener的方法</font><br>                public void windowDeiconified(WindowEvent e){} <font color="339900"><br>                          //重写WindowListener的方法</font><br>                public void windowIconified(WindowEvent e){ } <font color="339900"><br>                          //重写WindowListener的方法</font><br>                public void windowOpend(WindowEvent e){ } <font color="339900"><br>                          //重写WindowListener的方法</font></p>            <p class="pt9-black">  public static void main(String args[]) {<br>                   Frame f=new Frame(&quot;ArcTest&quot;); <font color="339900">//构造Frame</font><br>                   ArcTest arcTest=new ArcTest(); <font color="339900">//构造arcTest</font><br>                   atcTest.init();<br>                   arcTest.start();<br>                   f.add(&quot;Center&quot;,arcTest);<br>                   f.setSize(300,300);<br>                   f.show();</p>            <p class="pt9-black">      f.addWindowListener(arcTest);<br>                   }<br>                }<br>                class ArcCanvas extends Canvas{ <font color="339900">//类ArcCanvas</font><br>                   int startAngle=0;<br>                   int endAngle=45;<br>                   boolean filled=false;<br>                   Font font;<br>                   public void paint(Graphics g){ <font color="339900"><br>                      //paint方法,该方法的作用是在Canvas上画图</font><br>                    Rectangle r=getBounds();<br>                    int hlines=r.height/10;<br>                    int vlines=r.width/10;<br>                    g.setColor(Color.pink);</p>            <p class="pt9-black">   for(int i=1;i&lt;=hlines;i++) {<br>                    g.drawLine(0,i*10,r.width,i*10); <br>                    }<br>                for(int i=1;i&lt;=vlines;i++) {<br>                    g.drawLine(i*10,0,i*10,r.height);<br>                    }<br>                g.setColor(Color.red);<br>                if(filled) {<br>                    g.fillArc(0,0,r.width-1,r.height-1,startAngle,endAngle); }<br>                    else { g.drawArc(0,0,r.width-1,r.height-1,startAngle, endAngle);               <br>                }</p>            <p class="pt9-black">   g.setColor(Color.black);<br>                g.setFont(font);<br>                g.drawLine(0,r.height/2,r.width,r.height/2);<br>                g.drawLine(r.width/2,0,r.width/2,r.height);<br>                g.drawLine(0,,0,r.width,r.height);<br>                g.drawLine(r.width,0,0,r.height);<br>                int sx=10;<br>                int sy=r.height-28;<br>                g.drawString(&quot;S=&quot;+startAngle,sx,sy);<br>                g.drawString(&quot;E=&quot;+ednAngle,sx,sy+14);<br>                }</p>            <p class="pt9-black">   public void redraw(boolean filled,int start,int               end){ <font color="339900">//重画方法</font><br>                      this.filled=filled;<br>                      this.startAngle=start;<br>                      this.endAngle=end;<br>                      repaint(); <font color="339900"><br>                      //通过调用repaint()方法,从而最终调用paint方法完成重画</font><br>                      }<br>                }</p>            <p class="pt9-black">  class ArcControls extends Panel implements               ActionListener { <font color="339900">//ArcControls类</font><br>                      TextFiled s;<br>                      TextFiled e;<br>                      ArcCanvas canvas;</p>            <p class="pt9-black">  public ArcControls(ArcCanvas canvas) {<br>                      Button b=null;<br>                      this.canvas=canvas;<br>                      add(s=new TextField(&quot;0&quot;,4));<br>                      add(e=new TextField(&quot;45&quot;,4));<br>                      b=new Button(&quot;Fill&quot;);<br>                      b.addActionListener(this);<br>                      add(b);<br>                      b=new Button(&quot;Draw&quot;);<br>                      b.addActionListener(this);<br>                      add(b);<br>                }</p>            <p><span class="pt9-black">  public void actionPerformed(ActionEvent               ev) { <font color="339900"><br>                        //实现接口ActionListener的方法</font><br>                   String label=ev.getActionCommand();<br>                   canvas.redraw(label.equals(&quot;Fill&quot;), <br>                   Integer.parseInt(s.getText(),trim()),<br>                   Integer.parserInt(e.getText().trim());<br>                   }<br>                }</span></p>          </td>        </tr>      </table>    </td>  </tr></table></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -