我在我的動作中有一個MouseListener,動作對應於一個JButton。鼠標事件適用於右鍵單擊事件,但對於左鍵單擊事件似乎不會重置我的鼠標事件,因此每次左鍵單擊都會通過其之前的每個左鍵單擊進行播放。因此,第一次左鍵點擊會使我的數字增加1,第二次增加2,第三增加3,第四增加4等等。它每次只應增加1。我做了一些調試,看起來左鍵單擊功能是在每次左擊組件歷史記錄時調用的。Java MouseEvent左鍵單擊actionPerformed
有什麼想法?
private void setupActions()
{
oneAction = new AbstractAction("1")
{
@Override
public void actionPerformed(ActionEvent e)
{
((JButton)e.getSource()).addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
if (SwingUtilities.isLeftMouseButton(e))
{
Integer quantityField = (Integer) model.getValueAt(0, 3);
if (quantityField == null || quantityField == 0)
{
quickOrderTableModel.setValueAt(1, 0, 3);
}
else
{
Integer newValue = (quantityField + 1);
quickOrderTableModel.setValueAt(newValue, 0, 3);
}
}
if (SwingUtilities.isRightMouseButton(e))
{
Integer quantityField = (Integer) model.getValueAt(0, 3);
if (quantityField == null || quantityField == 0)
{
quickOrderTableModel.setValueAt(0, 0, 3);
}
else
{
Integer newValue = (quantityField - 1);
quickOrderTableModel.setValueAt(newValue, 0, 3);
}
}
}
});
}
};
如果單擊按鈕,則會調用actionPerformed(ActionEvent e)方法。每次發生這種情況時,都會向該按鈕添加一個新的MouseListener。所以如果你第一次點擊按鈕,它有一個MouseListener。如果你第二次點擊該按鈕,它有兩個MouseListener。如果你第三次點擊該按鈕,它有三個MouseListener ... – 2014-10-03 13:18:32