【问题标题】:Java nested class dont react to MouseListener eventsJava 嵌套类不对 MouseListener 事件做出反应
【发布时间】:2016-11-04 14:04:40
【问题描述】:

在 Java 中,我尝试创建一个用于在 JFrame 中显示两个 JPanel 组件的类,并在其中一个组件中添加一个 Mouselistener。 我创建了一个主 JPanel,并在其中嵌套了一个名为 drawRec(JPanel 类型)的私有类,用于绘制一个矩形,该矩形应该处理他上方的鼠标事件,但是当我单击时,什么也没有发生。这是我的代码:

public class Exercise2 extends JPanel  {

  private drawRec square;


  public static void main(String[] args) {
    JFrame wind = new JFrame();
    Exercise2 content = new Exercise2();
    wind.setContentPane(content);
    wind.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    wind.setLocation(100, 100);
    wind.setSize(new Dimension(500,500));
    wind.setVisible(true);

  }

  Exercise2() {
    setBackground(Color.BLACK);
    square = new drawRec();
  }

  public void paintComponent(Graphics g) {

    super.paintComponent(g); 
    square.draw(g, 100, 90);
  }

  private class drawRec extends JPanel implements MouseListener {


    drawRec() {
        addMouseListener(this);
    }

    private void draw(Graphics g, int x, int y) {

        g.setColor(Color.BLUE);
        g.fillRect(x, y, 50, 20);


    }

    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}

    public void mousePressed(MouseEvent e) {
        System.out.println("Test");
    }

    public void mouseReleased(MouseEvent e) {}

   }
}

提前致谢

【问题讨论】:

    标签: java swing jframe jpanel mouseevent


    【解决方案1】:

    您的框架不包含drawRec 面板。它包含一个Exercise2 面板,该面板调用drawRec.draw() 来绘制其内容。如果单击,则单击的是Exercise2 面板,该面板没有鼠标侦听器。

    也许你应该合并这两个类。至少您必须将鼠标侦听器添加到实际添加到框架中的组件中。

    最短的修复方法可能是:

    Exercise2() {
        setBackground(Color.BLACK);
        square = new drawRec();
        this.addMouseListener(square); // add this line
    }
    

    在这种情况下,您仍然没有将drawRec 用作面板(因为您没有将其添加到任何内容中),但您可以将其用作Exercise2 面板的鼠标侦听器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 2018-09-11
      • 2020-04-05
      • 2018-11-23
      相关资源
      最近更新 更多