JAVA AWT學習筆記(二)

Applet程式中所採用的AWT的繪圖機制主要涉及三個方法:paint()方法、update()方法和repaint()方法,update()方法和paint()方法都有一個Graphics類參數。Graphics是畫圖的關鍵,它可以支援兩種繪圖:一種是基本的繪圖,如:畫線、矩形、圓等;另一種是畫圖象,主要用於動畫製作。

  要進行繪圖,首先要找到一個Graphics類的物件。update()方法和paint()方法所傳遞的參數都是Graphics類的物件,因此主要是通過重載它們來進行繪圖,這是在動畫程式中經常使用的方法。我們還可以通過getGraphics()方法得到一個Graphics類的物件,這個物件和update()方法和paint()方法中所傳遞的物件一樣,都是該成員所對應的Graphics類的對象。得到了Graphics類的物件,就可使用各種繪圖方法。

  Graphics中提供的圖形繪製方法有:
  paint( ) //進行繪圖的具體操作,必須有程式師重寫
  update( ) //用於更新圖形,先清除背景、前景,再調用paint()
  repaint( ) /*用於重繪圖形,在元件外形發生變化,即大小改變或位置移動時,repaint( )方法立即被系統自動調用,而實際上repaint()方法是自動調用update()方法*/
  下面的方法支持基本的繪圖和畫圖像:
  void drawLine( )
  void drawArc( )
  void drawPolygon( )
  void drawRect( )
  void drawRoundRect( )
  void fill3DRect( )
  void fillOval( )
  java.awt.Graphics類
  
輸出文字:
  void drawBytes( )
  void drawChars( )
  void drawString( )

 

import java.awt. * ;
import java.awt.
event . * ;
import java.applet.
* ;

    
public   class  ArcTest extends Applet implements WindowListener  {
          ArcControls controls;
          pulic 
void init()//Applet的入口方法
              setLayout(new BorderLayout());
              ArcCanvas c
=new ArcCanvas();     
          Add(
"Center",c);
          add(
"South",controls=new ArcControls(C));
    }

    
public void start()
          controls.setEnabled(
true); //啟動controls
    }

    
public void stop(){
          controls.setEnabled(
false); 
    }

    
public void windowActivated(WindowEvent e){ } 
                        
//重寫WindowListener的方法
    public void windowClosed(WindowEvent e){ } 
                        
//重寫WindowListener的方法
    public void windowClosing(WindowEvent e)
                        
//重寫WindowListener的方法
          System.exit(0); }

    
public void windowDeactivated(WindowEvent e){} 
                        
//重寫WindowListener的方法
    public void windowDeiconified(WindowEvent e){} 
                        
//重寫WindowListener的方法
    public void windowIconified(WindowEvent e){ } 
                        
//重寫WindowListener的方法
    public void windowOpend(WindowEvent e){ } 
                        
//重寫WindowListener的方法
    public static void main(String args[]) {
          Frame f
=new Frame("ArcTest"); //構造Frame
          ArcTest arcTest=new ArcTest(); //構造arcTest
          atcTest.init();
          arcTest.start();
          f.add(
"Center",arcTest);
          f.setSize(
300,300);
          f.show();
          f.addWindowListener(arcTest);
          }

    }

    
class  ArcCanvas extends Canvas //類ArcCanvas
          int startAngle=0;
          
int endAngle=45;
          boolean filled
=false;
          Font font;
          
public void paint(Graphics g)
                
//paint方法,該方法的作用是在Canvas上畫圖
            Rectangle r=getBounds();
            
int hlines=r.height/10;
            
int vlines=r.width/10;
            g.setColor(Color.pink);
    
for(int i=1;i<=hlines;i++{
            g.drawLine(
0,i*10,r.width,i*10); 
            }

    
for(int i=1;i<=vlines;i++{
            g.drawLine(i
*10,0,i*10,r.height);
            }

    g.setColor(Color.red);
    
if(filled) {
            g.fillArc(
0,0,r.width-1,r.height-1,startAngle,endAngle); }

            
else { g.drawArc(0,0,r.width-1,r.height-1,startAngle, endAngle); 
    }

    g.setColor(Color.black);
    g.setFont(font);
    g.drawLine(
0,r.height/2,r.width,r.height/2);
    g.drawLine(r.width
/2,0,r.width/2,r.height);
    g.drawLine(
0,,0,r.width,r.height);
    g.drawLine(r.width,
0,0,r.height);
    
int sx=10;
    
int sy=r.height-28;
    g.drawString(
"S="+startAngle,sx,sy);
    g.drawString(
"E="+ednAngle,sx,sy+14);
    }

    
public void redraw(boolean filled,int start,int end)//重畫方法
                this.filled=filled;
                
this.startAngle=start;
                
this.endAngle=end;
                repaint(); 
                
//通過調用repaint()方法,從而最終調用paint方法完成重畫
                }

    }

    
class  ArcControls extends Panel implements ActionListener  //ArcControls類
                TextFiled s;
                TextFiled e;
                ArcCanvas canvas;
    
public ArcControls(ArcCanvas canvas) {
                Button b
=null;
                
this.canvas=canvas;
                add(s
=new TextField("0",4));
                add(e
=new TextField("45",4));
                b
=new Button("Fill");
                b.addActionListener(
this);
                add(b);
                b
=new Button("Draw");
                b.addActionListener(
this);
                add(b);
    }

    
public void actionPerformed(ActionEvent ev) 
                    
//實現介面ActionListener的方法
          String label=ev.getActionCommand();
          canvas.redraw(label.equals(
"Fill"), 
          Integer.parseInt(s.getText(),trim()),
          Integer.parserInt(e.getText().trim());
          }

    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值