使 MouseAdapter 引用它被添加到的 JComponent

Making a MouseAdapter refer to the JComponent it's being added to

我有很多按钮,它们的大部分功能应该相同,但按下时会更改链接到按钮的不同变量(主要是颜色)。我想尽可能精简代码(而不是输入相同的内容 10 次)。

我将如何着手编写此适配器以便它可用于 button1 和 button2?

MouseAdapter customMouseAdapter = new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                button1.setForeground(Color.WHITE);

            }
        };

    button1.addMouseListener(customMouseAdapter);
    button2.addMouseListener(customMouseAdapter);

你可以这样做。

public class ColourMouseAdapter extends MouseAdapter
{
    private final Color colour;
    private final JButton button;
    public ColourMouseAdapter(JButton button, Color colour)
    {
        this.colour = colour;
        this.button = button;
    }

    @Override
    public void mouseClicked(MouseEvent e)
    {
         button.setForeground(colour);
    }
}
JButton jbutton = new JButton();
jButton.addMouseListener(new ColourMouseAdapter(jbutton, Color.WHITE));

或者您可以按照其他人的建议进行此操作

public class ColourMouseAdapter extends MouseAdapter
{
    private final Color colour;
    public ColourMouseAdapter(Color colour)
    {
        this.colour = colour;
    }

    @Override
    public void mouseClicked(MouseEvent e)
    {
         if(e.getSource() instanceof JButton)
         {
              JButton button = e.getSource();
              button.setForeground(colour);
         }
    }
}