如何响应鼠标单击形状[闭合]

问题描述 投票:0回答:1
我想创建一个小的功能,其中:

    用户可以选择任意数量的对象(如线,圆等)进行偏移。
  1. 用户将右键单击要垂直偏移的对象,并提供一个可输入字段以指定偏移距离。
  2. 从#2单击“确定”按钮后,对象将从所选对象的中心和空间开始偏移指定的距离,直到所有所选对象都被放置。
  • 我是Swing Framework的新手,我已经学习了如何创建对象和动作侦听器。请帮助我这样做。

    import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.Line2D; import java.awt.geom.Point2D; import javax.swing.JComponent; public class Line extends JComponent { private final Point2D start, end; public Line( Point2D start, Point2D end){ this.start = start; this.end = end; addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { System.out.println("mouse clicked"); } }); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.BLACK); g2.setStroke(new BasicStroke(2.0F)); g2.draw(new Line2D.Double(start,end)); } }

  • java swing
    1个回答
    0
    投票
    通过将问题分解为较小的问题来解决。您需要做的第一件事是识别鼠标单击一行。一种实现方法是拥有这样的自定义组件:

    import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.Line2D; import java.awt.geom.Point2D; import javax.swing.JComponent; public class Line extends JComponent { private final Point2D start, end; public Line( Point2D start, Point2D end){ this.start = start; this.end = end; addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { System.out.println("mouse clicked"); } }); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.BLACK); g2.setStroke(new BasicStroke(2.0F)); g2.draw(new Line2D.Double(start,end)); } }

    尝试使用它在JPanel上画一条线。尝试画几条线并确定单击了哪条。之后,尝试移动单击的行。 
    © www.soinside.com 2019 - 2024. All rights reserved.