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

📄 panel1.java

📁 使用java实现的可以任意添加和移动线段端点的小程序!
💻 JAVA
字号:
package controlline;

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

public class Panel1
    extends JPanel {
  BorderLayout borderLayout1 = new BorderLayout();
  int n = 2;
  int current = -1;
  static double SIZE = 12.0;
  Point2D[] points = new Point2D[2];
  public Panel1() {
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  void jbInit() throws Exception {
    this.setForeground(Color.red);
    this.addMouseMotionListener(new Panel1_this_mouseMotionAdapter(this));
    this.addMouseListener(new Panel1_this_mouseAdapter(this));
    this.setLayout(borderLayout1);
    points[0] = new Point2D.Double(100, 100);
    points[1] = new Point2D.Double(200, 200);
  }

  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;
        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;
  //  g2.setColor(Color.yellow);
    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));
    }
    g2.draw(new Line2D.Double(points[0], points[1]));
    g2.drawString("第一个点: " + String.valueOf(points[0]) + "   "+"第二个点: " +
                  String.valueOf(points[1]),10,10);
  }
}

class Panel1_this_mouseAdapter
    extends java.awt.event.MouseAdapter {
  Panel1 adaptee;

  Panel1_this_mouseAdapter(Panel1 adaptee) {
    this.adaptee = adaptee;
  }

  public void mousePressed(MouseEvent e) {
    adaptee.this_mousePressed(e);
  }

  public void mouseReleased(MouseEvent e) {
    adaptee.this_mouseReleased(e);
  }
}

class Panel1_this_mouseMotionAdapter
    extends java.awt.event.MouseMotionAdapter {
  Panel1 adaptee;

  Panel1_this_mouseMotionAdapter(Panel1 adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseDragged(MouseEvent e) {
    adaptee.this_mouseDragged(e);
  }
}

⌨️ 快捷键说明

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