gpt4 book ai didi

java - 需要多个 JPanel 来响应其自己的鼠标单击事件

转载 作者:行者123 更新时间:2023-12-01 16:01:27 24 4
gpt4 key购买 nike

我的应用程序上有多个 JPanel,但是我不知道如何检测到底单击了哪个 JPanel。

在我的 MouseListener 中,我有参数 e,但我的方法不起作用

在代码的早期,我声明了多个 JPanel 和一个监听器对象。


PuzzleListener plist = new PuzzleListener();
JPanel puzzle_board = new JPanel(new GridLayout(4,4,5,5));
...
Square square1 = new Square("1");
Square square2 = new Square("2");
...
puzzle_board.add(square1);
puzzle_board.add(square2);
...
square1.addMouseListener(plist);
square1.addMouseListener(plist);<p></p>

<p>class PuzzleListener implements MouseListener
{</p>

public void mouseClicked(MouseEvent e)
{
JPanel pnlClick = (JPanel)(e.getSource());
//System.out.println(pnlClick);
//System.out.println(e.getSource());
//System.out.println(e.getComponent().getClass());
//System.out.println(e.getComponent().getClass().getName());


//problem is here

if(pnlClick == square1)
{
System.out.println("Panel 1 has been clicked");
}
if(pnlClick == square2)
{
System.out.println("Panel 2 has been clicked");
}
}
public void mouseExited(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
//System.out.println("Panel 1 has been clicked");
}
public void mouseReleased(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{

}
/*
public void actionPerformed(ActionEvent e)
{
JPanel pnlClick = (JPanel)(e.getSource());
}*/

}//end calcListener

最佳答案

问题似乎是您的每个方形面板都有一个类变量和一个局部变量。

Square square1 = new Square("1"); 

应该是:

square1 = new Square("1"); 

现在您将只有一个 PuzzleListener 可以引用的类变量。

关于java - 需要多个 JPanel 来响应其自己的鼠标单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3755363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com