有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java制作MouseAdapter引用它要添加到的JComponent

我有很多按钮,它们基本上应该以相同的方式工作,但按下按钮时会改变与按钮相关的不同变量(主要是颜色)。我希望尽可能地精简代码(而不是重复10次)

我将如何编写这个适配器,以便它可以用于button1和button2

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

            }
        };

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

共 (1) 个答案

  1. # 1 楼答案

    你可以这样做

    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);
             }
        }
    }