阅读量:0
在Java中,处理Line2D事件的常用方法是使用MouseListener和MouseMotionListener接口。以下是一个简单的示例,演示了如何实现Line2D事件处理:
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Line2DEventHandlingExample { public static void main(String[] args) { SwingUtilities.invokeLater(() -> createAndShowGUI()); } private static void createAndShowGUI() { JFrame frame = new JFrame("Line2D Event Handling Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); Line2D line = new Line2D.Double(50, 50, 350, 350); ShapePanel panel = new ShapePanel(line); frame.add(panel); frame.setVisible(true); } } class ShapePanel extends JPanel { private Line2D line; public ShapePanel(Line2D line) { this.line = line; addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (line.contains(e.getPoint())) { System.out.println("Line clicked!"); } else { System.out.println("Line not clicked."); } } }); addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { System.out.println("Mouse dragged."); } }); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setStroke(new BasicStroke(2)); g2d.draw(line); } }
在这个示例中,我们创建了一个名为Line2DEventHandlingExample
的主类,它包含一个简单的Swing应用程序。我们创建了一个名为ShapePanel
的自定义面板,它接受一个Line2D
对象作为参数。在ShapePanel
类中,我们添加了MouseListener
和MouseMotionListener
接口的实现,以便在单击线条和处理鼠标拖动事件时执行相应的操作。
当用户单击线条时,mouseClicked
方法将被调用。我们使用Line2D.contains()
方法检查鼠标点击位置是否在线条上。如果是,则输出"Line clicked!“,否则输出"Line not clicked.”。
当用户拖动鼠标时,mouseDragged
方法将被调用。在这个示例中,我们只是简单地输出"Mouse dragged.",但你可以根据需要执行其他操作。