Java2D

(0) (1) antyaliasing
(2) (3) (4)

 

Przeanalizuj powyższe przykłady i napisz kody apletów (1)-(4). Rozwiązanie przykładu (0) znajdziesz poniżej.


import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.awt.geom.*;

      
class Pole extends JPanel implements MouseListener
{
   int w,h;
   int red,green,blue;
   Random rnd=new Random(System.currentTimeMillis()); //generator liczb pseudolosowych 
   Ellipse2D.Double e;
   
   Pole()                                    
   {                                         
      super();                               
      setBackground(new Color(255,255,255));       //ustala kolor tła
                                             
      w=getWidth();                                //pobiera wymiary apletu
      h=getHeight();                         
      addMouseListener(this);                
   }                                         
   
   public void paintComponent(Graphics g)      
   {                                           
      super.paintComponent(g);                 
      Graphics2D g2d=(Graphics2D)g;               //rzutowanie kontekstu graficznego
                                               
      g2d.setColor(new Color(red,green,blue));    //ustala bieżący kolor 
      if(e!=null) g2d.fill(e);                    //rysuje wypełnienie obiektu e
   }                                           
   
   public void mousePressed(MouseEvent evt)        
   {                                               
      int x=evt.getX();                              //pobiera współrzędne wskaźnika
      int y=evt.getY();                              //myszy
                                                   
      int pr=rnd.nextInt(100)+10;                    //pobiera liczbę losową - promień
                                                   
      red=rnd.nextInt(256);                          //pobiera trzy liczby losowe
      green=rnd.nextInt(256);                        //- kolor
      blue=rnd.nextInt(256);                       
                                                   
      e=new Ellipse2D.Double(x-pr,y-pr,2*pr,2*pr); 
                                                   
      repaint();                                   
   }                                               
   
   public void mouseClicked(MouseEvent evt){}         //pozostałe metody 
   public void mouseReleased(MouseEvent evt){}        //interfejsu MouseListener
   public void mouseEntered(MouseEvent evt){}  
   public void mouseExited(MouseEvent evt){}   
}
 

      
public class Test extends JApplet
{
   public void init()                //metoda init apletu 
   {                              
      setContentPane(new Pole()); 
   }                              
}