こんにちは、MouseListener とイベントに問題があります。
次のコードがある場合、すべてのパネルに独自のリスナーがあり、このパネルに出入りすると、ホバー効果が正常に機能します。
for (int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
final JPanel p = new JPanel();
p.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseExited(MouseEvent e) {
p.setBackground( Background );
}
public void mouseEntered(MouseEvent e) {
p.setBackground( Hover );
}
public void mouseClicked(MouseEvent e) {}
});
p.setOpaque( true );
p.setBackground( Background );
p.setPreferredSize( new java.awt.Dimension( 15, 15 ) );
p.setBorder( BorderFactory.createLineBorder( Border ) );
Pane.add(p);
}
}
しかし、独自のクラスを作成し、この新しいクラスに JPanel とリスナーを実装すると、最後のパネルのみがトリガーされます。問題はどこだ?
Main Class
for (int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
final Pad p = new Pad();
Pane.add(p.getContent());
}
}
...
public class Pad{
private static JPanel p;
public Pad(Color Back, Color Hov, Color Bord,String name){
...
p = new JPanel();
p.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseExited(MouseEvent e) {
p.setBackground( Background );
}
public void mouseEntered(MouseEvent e) {
p.setBackground( Hover );
}
public void mouseClicked(MouseEvent e) {}
});
p.setOpaque( true );
p.setBackground( Background );
p.setPreferredSize( new java.awt.Dimension( 15, 15 ) );
p.setBorder( BorderFactory.createLineBorder( Border ) );
}
public static Container getContent(){
return p;
}