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

📄 panel1.java~6~

📁 java灵感设计
💻 JAVA~6~
字号:
package controlpolygon;import java.awt.*;import javax.swing.JPanel;import java.awt.geom.*;import java.util.*;import java.awt.event.*;/** * <p>Title: ControlPolygonDemo</p> * <p>Description: This is a Control Polygon demo</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: d6-125</p> * @author Liujun * @version 1.0 */public class Panel1 extends JPanel {  BorderLayout borderLayout1 = new BorderLayout();    //在此添加自己的变量    int n = 5;//一个多边形有五个控制点    int current = -1;//当前的控制点    static   double SIZE = 12.0;//控制点大小    Point2D []   points = new Point2D[5];//五个控制点  public Panel1() {    try {      jbInit();    }    catch(Exception ex) {      ex.printStackTrace();    }  }  void jbInit() throws Exception {    this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {      public void mouseDragged(MouseEvent e) {        this_mouseDragged(e);      }    });    this.addMouseListener(new java.awt.event.MouseAdapter() {      public void mousePressed(MouseEvent e) {        this_mousePressed(e);      }      public void mouseReleased(MouseEvent e) {        this_mouseReleased(e);      }    });    this.setLayout(borderLayout1);       //add code here         //产生两个初始的点         points[0] = new Point2D.Double(100.0, 100.0);         points[1] = new Point2D.Double(100.0, 150.0);         points[2] = new Point2D.Double(130.0, 170.0);         points[3] = new Point2D.Double(250.0, 260.0);         points[4] = new Point2D.Double(300.0, 200.0); }  void this_mousePressed(MouseEvent e) {    Point p = e.getPoint();      for (int i = 0; i < n; 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;//如果是,则设current为当前点            return;         }      }  }  void this_mouseReleased(MouseEvent e) {   current = -1;//鼠标被释放  }  void this_mouseDragged(MouseEvent e) {     if (current == -1) return;//如果鼠标没有按下,则返回      points[current] = e.getPoint();//设置当前点为鼠标的位置      this.repaint();//重绘图形  }  protected void paintComponent(Graphics g) {    /**@todo: Override this javax.swing.JComponent method*/    super.paintComponent( g);      if (points == null) return;      Graphics2D g2 = (Graphics2D)g;//使用Java 2D      for (int i = 0; i < n; i++)//画控制点      {  double x = points[i].getX() - SIZE / 2;         double y = points[i].getY() - SIZE / 2;         g2.fill(new Rectangle2D.Double(x, y, SIZE, SIZE));      }      //重画多边形      GeneralPath Polygon = new GeneralPath();      Polygon.moveTo((float)points[0].getX(), (float)points[0].getY());      for (int i = 1; i < n; i++)         Polygon.lineTo((float)points[i].getX(), (float)points[i].getY());      Polygon.closePath();      g2.draw(Polygon);  }}

⌨️ 快捷键说明

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