cpw: actionperformed für mehrere Objekte

Beitrag lesen

Hmm... der JButton kennt ActionCommands, mit denen sowas recht einfach zu bewerkstelligen ist, etwas in der Richtung hab' ich beim JLabel gerade auf die Schnelle nicht gefunden.

Allerdings kannst du die Objekte per .getSource() und .equals() vergleichen - so kannst du feststellen, welches Label geklickt wurde. Ein bisschen umständlich vielleicht, aber was eleganteres fällt mir gerade nicht ein.

Beispiel:

  
import javax.swing.*;  
import java.awt.*;  
import java.awt.event.*;  
  
public class Klasse extends JFrame  
{  
 private JLabel[] labels;  
  
 public static void main(String[] args)  
 {  
  new Klasse();  
 }  
  
 public Klasse()  
 {  
  super("Test");  
  
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  this.setSize(640,480);  
  this.setLocationRelativeTo(null);  
  
  Container cp = this.getContentPane();  
  cp.setLayout(new GridLayout(10,1));  
  
  LabelListener ll = new LabelListener();  
  
  this.labels = new JLabel[4];  
  
  for(int i=0; i<this.labels.length; i++)  
  {  
   this.labels[i] = new JLabel("tollesLabel");  
   this.labels[i].addMouseListener(ll);  
   cp.add(this.labels[i]);  
  }  
  
  this.setVisible(true);  
 }  
  
  
  private class LabelListener implements MouseListener  
  {  
   public void mouseClicked(MouseEvent me)  
   {  
    if(Klasse.this.labels[0].equals( (JLabel)me.getSource()))  
    {  
     System.out.println("Label 1 geklickt");  
    }  
  
    if(Klasse.this.labels[1].equals( (JLabel)me.getSource()))  
    {  
     System.out.println("Label 2 geklickt");  
    }  
  
    if(Klasse.this.labels[2].equals( (JLabel)me.getSource()))  
    {  
     System.out.println("Label 3 geklickt");  
    }  
  
    if(Klasse.this.labels[3].equals( (JLabel)me.getSource()))  
    {  
     System.out.println("Label 4 geklickt");  
    }  
  
  
   }  
  
   public void mousePressed(MouseEvent me)  
   {  
  
   }  
  
   public void mouseExited(MouseEvent me)  
   {  
  
   }  
  
   public void mouseEntered(MouseEvent me)  
   {  
  
   }  
  
   public void mouseReleased(MouseEvent me)  
   {  
  
   }  
  
  }  
  
 }