📄 right6_3_2.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("Center",c);<br> add("South",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("ArcTest"); <font color="339900">//构造Frame</font><br> ArcTest arcTest=new ArcTest(); <font color="339900">//构造arcTest</font><br> atcTest.init();<br> arcTest.start();<br> f.add("Center",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<=hlines;i++) {<br> g.drawLine(0,i*10,r.width,i*10); <br> }<br> for(int i=1;i<=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("S="+startAngle,sx,sy);<br> g.drawString("E="+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("0",4));<br> add(e=new TextField("45",4));<br> b=new Button("Fill");<br> b.addActionListener(this);<br> add(b);<br> b=new Button("Draw");<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("Fill"), <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 + -