亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? shapetest.java

?? java源碼 java源碼 值得一看 值得一看
?? JAVA
字號(hào):
/**
   @version 1.01 2004-08-24
   @author Cay Horstmann
*/

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

/**
   This program demonstrates the various 2D shapes.
*/
public class ShapeTest
{  
   public static void main(String[] args)
   {  
      JFrame frame = new ShapeTestFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

/**
   This frame contains a combo box to select a shape 
   and a panel to draw it.
*/
class ShapeTestFrame extends JFrame
{  
   public ShapeTestFrame()
   {  
      setTitle("ShapeTest");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

      final ShapePanel panel = new ShapePanel();
      add(panel, BorderLayout.CENTER);
      final JComboBox comboBox = new JComboBox();
      comboBox.addItem(new LineMaker());
      comboBox.addItem(new RectangleMaker());
      comboBox.addItem(new RoundRectangleMaker());
      comboBox.addItem(new EllipseMaker());
      comboBox.addItem(new ArcMaker());
      comboBox.addItem(new PolygonMaker());
      comboBox.addItem(new QuadCurveMaker());
      comboBox.addItem(new CubicCurveMaker());
      comboBox.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {  
               ShapeMaker shapeMaker = (ShapeMaker) comboBox.getSelectedItem();
               panel.setShapeMaker(shapeMaker);
            }
         });
      add(comboBox, BorderLayout.NORTH);
      panel.setShapeMaker((ShapeMaker) comboBox.getItemAt(0));
   }

   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 300;
}

/**
   This panel draws a shape and allows the user to 
   move the points that define it.
*/
class ShapePanel extends JPanel
{  
   public ShapePanel()
   {  
      addMouseListener(new
         MouseAdapter()
         {
            public void mousePressed(MouseEvent event)
            {  
               Point p = event.getPoint();
               for (int i = 0; i < points.length; i++)
               {  
                  double x = points[i].getX() - SIZE / 2;
                  double y = points[i].getY() - SIZE / 2;
                  Rectangle2D r = new Rectangle2D.Double(x, y, SIZE, SIZE);
                  if (r.contains(p))
                  {  
                     current = i;
                     return;
                  }
               }
            }

            public void mouseReleased(MouseEvent event)
            {  
               current = -1;
            }
         });
      addMouseMotionListener(new 
         MouseMotionAdapter()
         {
            public void mouseDragged(MouseEvent event)
            {  
               if (current == -1) return;
               points[current] = event.getPoint();
               repaint();
            }
         });
      current = -1;
   }

   /**
      Set a shape maker and initialize it with a random 
      point set.
      @param aShapeMaker a shape maker that defines a shape
      from a point set
   */      
   public void setShapeMaker(ShapeMaker aShapeMaker)
   {  
      shapeMaker = aShapeMaker;
      int n = shapeMaker.getPointCount();
      points = new Point2D[n];
      for (int i = 0; i < n; i++)
      {  
         double x = generator.nextDouble() * getWidth();
         double y = generator.nextDouble() * getHeight();
         points[i] = new Point2D.Double(x, y);
      }
      repaint();
   }

   public void paintComponent(Graphics g)
   {  
      super.paintComponent(g);
      if (points == null) return;
      Graphics2D g2 = (Graphics2D) g;
      for (int i = 0; i < points.length; i++)
      {  double x = points[i].getX() - SIZE / 2;
         double y = points[i].getY() - SIZE / 2;
         g2.fill(new Rectangle2D.Double(x, y, SIZE, SIZE));
      }

      g2.draw(shapeMaker.makeShape(points));
   }

   private Point2D[] points;
   private static Random generator = new Random();
   private static int SIZE = 10;
   private int current;
   private ShapeMaker shapeMaker;
}

/**
   A shape maker can make a shape from a point set.
   Concrete subclasses must return a shape in the makeShape
   method.
*/
abstract class ShapeMaker
{  
   /**
      Constructs a shape maker.
      @param aPointCount the number of points needed to define
      this shape.
   */
   public ShapeMaker(int aPointCount)
   {  
      pointCount = aPointCount;
   }

   /**
      Gets the number of points needed to define this shape.
      @return the point count
   */
   public int getPointCount()
   {  
      return pointCount;
   }

   /**
      Makes a shape out of the given point set.
      @param p the points that define the shape
      @return the shape defined by the points
   */
   public abstract Shape makeShape(Point2D[] p);

   public String toString()
   {  
      return getClass().getName();
   }

   private int pointCount;
}

/**
   Makes a line that joins two given points.
*/
class LineMaker extends ShapeMaker
{  
   public LineMaker() { super(2); }

   public Shape makeShape(Point2D[] p)
   {  
      return new Line2D.Double(p[0], p[1]);
   }
}

/**
   Makes a rectangle that joins two given corner points.
*/
class RectangleMaker extends ShapeMaker
{  
   public RectangleMaker() { super(2); }

   public Shape makeShape(Point2D[] p)
   {  
      Rectangle2D s = new Rectangle2D.Double();
      s.setFrameFromDiagonal(p[0], p[1]);
      return s;
   }
}

/**
   Makes a round rectangle that joins two given corner points.
*/
class RoundRectangleMaker extends ShapeMaker
{  
   public RoundRectangleMaker() { super(2); }

   public Shape makeShape(Point2D[] p)
   {  
      RoundRectangle2D s = new RoundRectangle2D.Double(0, 0, 0, 0, 20, 20);
      s.setFrameFromDiagonal(p[0], p[1]);
      return s;
   }
}

/**
   Makes an ellipse contained in a bounding box with two given 
   corner points.
*/
class EllipseMaker extends ShapeMaker
{  
   public EllipseMaker() { super(2); }

   public Shape makeShape(Point2D[] p)
   {  
      Ellipse2D s = new Ellipse2D.Double();
      s.setFrameFromDiagonal(p[0], p[1]);
      return s;
   }
}

/**
   Makes an arc contained in a bounding box with two given 
   corner points, and with starting and ending angles given
   by lines emanating from the center of the bounding box and
   ending in two given points. To show the correctness of 
   the angle computation, the returned shape contains the arc,
   the bounding box, and the lines.
*/
class ArcMaker extends ShapeMaker
{  
   public ArcMaker() { super(4); }

   public Shape makeShape(Point2D[] p)
   {  
      double centerX = (p[0].getX() + p[1].getX()) / 2;
      double centerY = (p[0].getY() + p[1].getY()) / 2;
      double width = Math.abs(p[1].getX() - p[0].getX());
      double height = Math.abs(p[1].getY() - p[0].getY());

      double distortedStartAngle = Math.toDegrees(Math.atan2(-(p[2].getY() - centerY)
            * width, (p[2].getX() - centerX) * height));
      double distortedEndAngle = Math.toDegrees(Math.atan2(-(p[3].getY() - centerY)
            * width, (p[3].getX() - centerX) * height));
      double distortedAngleDifference = distortedEndAngle - distortedStartAngle;
      if (distortedStartAngle < 0) distortedStartAngle += 360;
      if (distortedAngleDifference < 0) distortedAngleDifference += 360;

      Arc2D s = new Arc2D.Double(0, 0, 0, 0, 
         distortedStartAngle, distortedAngleDifference, Arc2D.OPEN);
      s.setFrameFromDiagonal(p[0], p[1]);

      GeneralPath g = new GeneralPath();
      g.append(s, false);
      Rectangle2D r = new Rectangle2D.Double();
      r.setFrameFromDiagonal(p[0], p[1]);
      g.append(r, false);
      Point2D center = new Point2D.Double(centerX, centerY);
      g.append(new Line2D.Double(center, p[2]), false);
      g.append(new Line2D.Double(center, p[3]), false);
      return g;
   }
}

/**
   Makes a polygon defined by six corner points.
*/
class PolygonMaker extends ShapeMaker
{  
   public PolygonMaker() { super(6); }

   public Shape makeShape(Point2D[] p)
   {  
      GeneralPath s = new GeneralPath();
      s.moveTo((float) p[0].getX(), (float) p[0].getY());
      for (int i = 1; i < p.length; i++)
         s.lineTo((float) p[i].getX(), (float) p[i].getY());
      s.closePath();
      return s;
   }
}

/**
   Makes a quad curve defined by two end points and a control 
   point.
*/
class QuadCurveMaker extends ShapeMaker
{  
   public QuadCurveMaker() { super(3); }

   public Shape makeShape(Point2D[] p)
   {  
      return new QuadCurve2D.Double(p[0].getX(), p[0].getY(), p[1].getX(), p[1].getY(), 
         p[2].getX(), p[2].getY());
   }
}

/**
   Makes a cubic curve defined by two end points and two control
   points.
*/
class CubicCurveMaker extends ShapeMaker
{  
   public CubicCurveMaker() { super(4); }

   public Shape makeShape(Point2D[] p)
   {  
      return new CubicCurve2D.Double(p[0].getX(), p[0].getY(), p[1].getX(), p[1].getY(), 
         p[2].getX(), p[2].getY(), p[3].getX(), p[3].getY());
   }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
伊人开心综合网| 精品99999| 免费不卡在线观看| 亚洲欧洲精品一区二区精品久久久 | 欧美伊人精品成人久久综合97| 日韩福利视频网| 国产精品美女视频| 精品1区2区在线观看| 欧美亚洲自拍偷拍| a4yy欧美一区二区三区| 国内成人自拍视频| 三级不卡在线观看| 亚洲精品国产a| 亚洲国产成人私人影院tom| 制服丝袜成人动漫| 欧美熟乱第一页| 99久久免费视频.com| 国产精品白丝av| 看片网站欧美日韩| 日日夜夜一区二区| 视频在线在亚洲| 欧美性生活影院| 97精品电影院| 成人视屏免费看| 国产一区亚洲一区| 精品影视av免费| 美日韩一区二区| 免费观看30秒视频久久| 亚洲第一久久影院| 一区二区三区免费在线观看| 亚洲少妇中出一区| 国产精品女主播av| 日本一区二区三级电影在线观看| 精品少妇一区二区三区免费观看 | 精品久久久久99| 91精品福利在线一区二区三区| 欧美亚洲综合在线| 欧美性猛交xxxx乱大交退制版| 91视频你懂的| 一本久久a久久精品亚洲| 另类小说图片综合网| 亚洲成人av一区二区| 国产欧美日韩另类一区| 欧美高清视频一二三区 | 国产精品不卡一区| 欧美国产禁国产网站cc| 国产欧美精品在线观看| 国产精品亲子伦对白| 国产精品乱码一区二区三区软件| 欧美高清在线一区二区| 国产精品短视频| 亚洲精品成人在线| 亚洲成人久久影院| 老鸭窝一区二区久久精品| 玖玖九九国产精品| 国产精品一区三区| 91在线精品一区二区三区| 一本到高清视频免费精品| 日韩三区在线观看| 久久久午夜精品| 亚洲三级在线观看| 91亚洲精华国产精华精华液| 天堂成人国产精品一区| 中文字幕一区在线| 亚洲精品国产一区二区精华液| 亚洲综合在线五月| 奇米在线7777在线精品| 黑人巨大精品欧美黑白配亚洲| 成人一道本在线| 色婷婷国产精品| 日韩欧美国产三级电影视频| 国产亚洲午夜高清国产拍精品| 国产精品久久福利| 亚洲国产精品视频| 国产一区二区三区四区五区美女| 99精品热视频| 欧美电影影音先锋| 国产欧美日韩亚州综合| 亚洲一区二区三区美女| 韩国女主播一区| 日本乱人伦aⅴ精品| 精品精品国产高清a毛片牛牛| 国产精品美女久久久久久久久| 亚洲一区二区三区四区五区中文| 紧缚捆绑精品一区二区| 色中色一区二区| 欧美成人福利视频| 亚洲精品国久久99热| 国产综合成人久久大片91| 在线免费精品视频| 久久久亚洲综合| 丝袜诱惑亚洲看片| 成人99免费视频| 精品日韩av一区二区| 亚洲精品国产品国语在线app| 国产综合久久久久久久久久久久| 在线观看欧美日本| 国产欧美日韩精品a在线观看| 婷婷开心激情综合| av网站一区二区三区| 精品av久久707| 亚洲成年人网站在线观看| jlzzjlzz亚洲日本少妇| 精品少妇一区二区三区日产乱码| 玉足女爽爽91| 成人动漫视频在线| 美美哒免费高清在线观看视频一区二区 | 国产在线精品一区二区不卡了 | 日韩你懂的在线播放| 亚洲欧美日韩国产另类专区| 国产一区二区三区在线看麻豆| 欧美精品免费视频| 亚洲男女毛片无遮挡| 高清不卡在线观看| 日韩精品一区二区三区视频播放| 亚洲午夜一区二区三区| 91欧美一区二区| 国产精品视频一二三| 国产精品自在欧美一区| 欧美一级理论片| 日本不卡1234视频| 欧美美女一区二区| 亚洲第一会所有码转帖| 色88888久久久久久影院野外| 国产精品日韩精品欧美在线| 国产一区二区三区综合| 国产在线观看一区二区| 天堂蜜桃一区二区三区| 国产在线播精品第三| 日韩免费看网站| 另类成人小视频在线| 91精品国产高清一区二区三区蜜臀| 亚洲午夜国产一区99re久久| 色婷婷av一区二区三区软件 | 欧美变态tickling挠脚心| 视频在线观看91| 欧美精品丝袜中出| 日韩电影免费在线观看网站| 欧美高清激情brazzers| 日韩va欧美va亚洲va久久| 欧美精品久久久久久久多人混战 | a在线播放不卡| 中文字幕欧美三区| hitomi一区二区三区精品| 中文字幕永久在线不卡| 99久久久无码国产精品| 亚洲丝袜精品丝袜在线| 91浏览器打开| 亚洲国产精品综合小说图片区| 欧美日韩中文国产| 青青国产91久久久久久| 2022国产精品视频| 成人免费毛片app| 亚洲男人都懂的| 精品视频全国免费看| 婷婷开心久久网| 久久综合狠狠综合久久综合88 | 婷婷国产在线综合| 日韩亚洲欧美在线观看| 国内精品国产成人国产三级粉色| 国产偷国产偷精品高清尤物| 成人av资源在线观看| 樱花草国产18久久久久| 制服丝袜中文字幕一区| 国产一区二区三区在线观看精品| 国产精品嫩草影院com| 91成人在线免费观看| 轻轻草成人在线| 日本一区二区三区高清不卡| 在线亚洲+欧美+日本专区| 天堂蜜桃一区二区三区| 久久这里都是精品| 91美女视频网站| 美女视频免费一区| ㊣最新国产の精品bt伙计久久| 欧美色综合天天久久综合精品| 美女www一区二区| 日韩一区在线播放| 日韩视频免费观看高清完整版在线观看| 国产精品99久久久久久久vr | 欧美日韩一区二区电影| 国产一区二区在线电影| 有码一区二区三区| 亚洲精品在线网站| 欧美主播一区二区三区| 极品少妇xxxx精品少妇| 亚洲乱码国产乱码精品精98午夜| 日韩欧美在线不卡| 色综合一区二区三区| 日产国产欧美视频一区精品| 国产精品久久久久久户外露出 | 美女在线视频一区| 最新成人av在线| 精品免费日韩av| 欧美在线|欧美| 成人污污视频在线观看| 免费成人小视频| 亚洲国产一区视频| 国产欧美视频一区二区三区| 日韩午夜av电影|