چیز خاصی منظورم نبود. همون هندلر معمولی فقط یکم عمومیت بهش بدی تا هم کد ساده بشه و هم بتونی مثلا هر گروه خواستی اینکار رو انجام بدی.
مثلا کد زیر هر چند تا JButton که به عنوان آرگومان به سازنده MyHandler بدی در یک گروه قرار میگیرند. چون در کد از JComponent استفاده شده پس فرقی نمیکنه JButton باشه، JLabel باشه یا ... فقط لازمه رخداد کلیک موس رو داشته باشند
import java.awt.Color;import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class Main2 extends JFrame{
public Main2(){
super();
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
JButton label1=new JButton("JButton 1");
JButton label2=new JButton("JButton 2");
JButton label3=new JButton("JButton 3");
JButton label4=new JButton("JButton 4");
JButton label5=new JButton("JButton 5");
MyHandler mouseHandler=new MyHandler(label1,label2,label3,label4,label5);
label1.addMouseListener(mouseHandler);
label2.addMouseListener(mouseHandler);
label3.addMouseListener(mouseHandler);
label4.addMouseListener(mouseHandler);
label5.addMouseListener(mouseHandler);
add(label1);
add(label2);
add(label3);
add(label4);
add(label5);
}
private class MyHandler extends MouseAdapter{
JComponent components[];
public MyHandler(JComponent ... components) {
this.components=components;
}
@Override
public void mouseClicked(MouseEvent e) {
JComponent targetLabel=(JComponent) e.getSource();
for(int i=0;i<components.length;i++){
components[i].setBackground(Color.YELLOW);
}
targetLabel.setBackground(Color.red);
}
}
public static void main(String[] args) {
new Main2().setVisible(true);
}
}