Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab mehrere Labels, die per Mausklick eine Methode ausführen sollen.
Ein ActionListener ist bei Labels nicht anwendbar, also welchen Listener muss ich anwenden?
Hab aber noch ne Frage:
Die Labels, die ich oben angesprochen habe, werden durch eine Schleife hinzugefügt.
Durch diese Labels werden Suchergebnisse angezeigt, Anzahl der Labels ist abhängig wieviel
Suchergebnisse vorliegen.
Um eines der Suchergebnisse anzuzeigen, soll es farblich von den Anderen unterschieden werden. Das mache ich folgendermaßen:
Code:
public void anzeigen() {
javax.swing.JPanel neuesPanel = new javax.swing.JPanel();
int anzahlErgebnisse = ergebnisse.size();
if(anzahlErgebnisse <= 1){
dispose();
}
else{
for(int i = 0; i <= anzahlErgebnisse - 1; i++){
inneresPanel.setLayout(new BoxLayout(inneresPanel, BoxLayout.PAGE_AXIS));
einLabel = new javax.swing.JLabel();
Object einDatensatz = (ergebnisse.get(i));
final String kdnr = String.valueOf(((DBDatensatz) einDatensatz).getkdNr());
String name = String.valueOf(((DBDatensatz) einDatensatz).getName());
System.out.println("Kundennummer:" + kdnr + " " + "Kundenname: "+ name);
einLabel.setText("Kundennummer:" + kdnr + " " + "Kundenname: "+ name);
einLabel.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
String selektierteNr = kdnr;
setGeklickteNr(selektierteNr);
}
public void mouseEntered(MouseEvent e){
einLabel.setForeground(Color.RED);
}
public void mouseExited(MouseEvent e){
einLabel.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e){
einLabel.setForeground(Color.WHITE);
}
public void mouseReleased(MouseEvent e){
}
});
inneresPanel.add(einLabel);
}
}
pack();
}
Leider wird aber dadurch nur das letzte Suchergebniss farblich unterschieden.
Hat jemand vielleicht eine Lösung dafür?
Ich denke es liegt daran, dass jedes Label praktisch den gleichen Namen hat und deswegen der Listener nur für das letzte Label funktioniert...
Ganz einfach: Du musst "einLabel" umbenennen in "mehrereLabels" :lol:
Neee, also, "einLabel" ist im Moment wohl eine Variable in der Klasse - und der kann immer nur EIN Label zugewiesen sein (wie der Name schon suggeriert :wink: ). Wenn du dort mehrere Labels anlegen willst, musst du die Variable lokal deklarieren. Und damit man aus dem anonymen Listener darauf zugreifen kann, muss sie final sein.