【发布时间】:2014-04-11 07:18:15
【问题描述】:
我不确定这是 Mac 问题,还是我的代码问题。我正在创建一个按钮网格。对于每个按钮,我使用 ActionEvent 进行常规单击,并使用 MouseEvent 进行右键单击。当我按住 CTRL 键单击鼠标事件时会发生什么,但该操作甚至也会触发。有没有办法在同时使用动作和鼠标事件的同时解决这个问题?相关代码:
视图构造函数:
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
button[i][j] = new Cell();
button[i][j].addActionListener( new changeButtonHandler() );
button[i][j].addMouseListener( new handleRight() );
playArea.add(button[i][j]);
}
}
动作事件类:
public class changeButtonHandler implements ActionListener
{
/**
* Action performed after button is clicked
*
*/
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent e)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
if (button[i][j] == e.getSource())
{
//do stuff
}
else if(button[i][j].mine==false){
//do other stuff
}
}
}
}
}
}//end changeButtonHandler class
鼠标事件类
public class handleRight implements MouseListener {
/**
* Action performed after button is right-clicked
*
*/
public void mouseClicked(MouseEvent e)
{
if (SwingUtilities.isRightMouseButton(e) || e.isControlDown()) {
System.out.println("Right Worked");
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
if (button[i][j] == e.getSource())
{
//do stuff
}
}
}
}
}
【问题讨论】:
-
在这种情况下,你最好创建一个简单的程序,一个没有按钮数组的程序,但是一个小而完整的程序,足以让我们编译、运行和测试,@ 987654321@.
-
所以您希望鼠标事件通过 ctrl-click 触发而不是按下按钮?这是一种不寻常的行为,至少对我来说是这样。
-
在 Mac 上的 CTRL-Click 就像在 Windows 中的右键单击一样,因此在右键单击操作很重要的游戏中,是的,这就是我希望它的工作方式。 (我不用鼠标)
标签: java mouseevent actionevent