java - 如何在JAVA中添加鼠标监听器?

标签 java user-interface jpanel mouse listener

private class Board extends JPanel {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int w=getWidth();
        int h=getHeight();
        Graphics2D g2d = (Graphics2D) g;

以下代码绘制网格:

        g2d.setPaint(Color.WHITE);
        g2d.fill(new Rectangle2D.Double(0, 0, w, h));
        g2d.setPaint(Color.BLACK);
        g2d.setStroke(new BasicStroke(4));
        g2d.draw(new Line2D.Double(0, h/3, w, h/3));
        g2d.draw(new Line2D.Double(0, h*2/3, w, h*2/3));
        g2d.draw(new Line2D.Double(w/3, 0, w/3, h));
        g2d.draw(new Line2D.Double(w*2/3, 0, w*2/3, h));

以下代码通过访问数组List中的元素来绘制圆圈和x:

        for(Shape shape : shapes){
            g2d.setPaint(Color.BLUE);
            g2d.draw(shape);
        }
    }
}

public void addMouseListener(MouseListener ml){

    // HOW CAN I ADD A MOUSE LISTENER HERE? 

}

最佳答案

您可以创建一个实现 MouseListener 接口(interface)的类,如下所示:

   public class CustomMouseListener implements MouseListener{

      public void mouseClicked(MouseEvent e) {
         statusLabel.setText("Mouse Clicked: ("+e.getX()+", "+e.getY() +")");
      }

      public void mousePressed(MouseEvent e) {
      }

      public void mouseReleased(MouseEvent e) {
      }

      public void mouseEntered(MouseEvent e) {
      }

      public void mouseExited(MouseEvent e) {
      }
   }

您希望根据方法所代表的操作来定义每个方法(这是不言自明的)。 MouseEvent 对象将包含您需要的与鼠标相关的所有信息(例如鼠标的 x 和 y 位置)。

现在您想要将这个新的 MouseListener 添加到 JPanel(在本例中是您的 Board 类):

  //JPanel panel = new JPanel();      
  Board panel = new Board();
  panel.addMouseListener(new CustomMouseListener());

Source

关于java - 如何在JAVA中添加鼠标监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558916/

相关文章:

java - 如何创建重置和暂停计时器的按钮?

java - 更改 TextView 的下划线颜色

javascript - 下拉菜单未显示在表 : Tailwind, React

css - 如何在 table 隐藏部分的边缘正确转换阴影?

java - 使用canvas向JFrame添加其他组件

java - 从 javascript 调用 java 方法

Java Tetris - 使用旋转矩阵的旋转

java - 按钮在右侧对齐不正确,并且右侧组件的尺寸太大

java - 将 pom.xml 与父级合并

java - 如何将包含 JPanel 的 JScrollPane 视口(viewport)滚动到特定位置