Hallo,
ich bin so ein bisschen am verzweifeln. Ich erstelle auf meinem JFrame mehrere JLabels als Array in einer Schleife. Nun möchte ich, dass das JLabel was ich anklicke, seinen Text ändert. Also bekommt jedes JLabel einen Mouseadapter. Wie sage ich dem Mouseadapter jetzt am besten, welches JLabel den Text ändern soll?
Hier mal mein Beispiel. In dem wird leider nur das letzte JLabel beim Klicken geändert.
Soviel dazu.
Später möchte ich meine MosueEvents noch in eine extra .java auslagern. Aber da weiß ich dann noch weniger, wie ich jedem JLabel sein ClickEvent vermitteln kann. Da ich in der extra Klasse die balkens nicht ansprechen kann. Auch nicht wenn diese public sind. Ich glaube ich muss die Werte irgendwie kompliziert übergeben oder? Dazu auch ein kleines Beispiel. Aber mit einer Lösung für das obere wäre ich erstmal zufrieden.
Vielen Dank und
schöne Grüße
ich bin so ein bisschen am verzweifeln. Ich erstelle auf meinem JFrame mehrere JLabels als Array in einer Schleife. Nun möchte ich, dass das JLabel was ich anklicke, seinen Text ändert. Also bekommt jedes JLabel einen Mouseadapter. Wie sage ich dem Mouseadapter jetzt am besten, welches JLabel den Text ändern soll?
Hier mal mein Beispiel. In dem wird leider nur das letzte JLabel beim Klicken geändert.
Java:
import java.awt.Color;
import java.util.Random;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Start extends JFrame implements ActionListener{
private JButton btnRunter;
public Balken[] balkens = new Balken[100];
private int balkenindex;
public Start(){
setSize(500,500);
setLayout(null);
Random zufall = new Random();
int posX = 0;
int posY = 0;
for (int i = 0; i < 10; i++){
Color farbe = new Color(zufall.nextInt(255),zufall.nextInt(255),zufall.nextInt(255));
balkens[i] = new Balken();
balkens[i].setBackground(farbe);
balkens[i].setOpaque(true);
balkens[i].setBounds(posX, posY, 200, 20);
balkens[i].setText(String.valueOf(i));
balkens[i].setName(String.valueOf(i));
balkenindex = i;
balkens[i].addMouseListener(new MouseL());
balkens[i].addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
// TODO Auto-generated method stub
balkens[balkenindex].setText("Neuer Text");
}
});
add(balkens[i]);
posY += 20;
}
btnRunter = new JButton();
btnRunter.setBounds(200,0,200,20);
btnRunter.addActionListener(this);
add(btnRunter);
}
public static void main(final String args[]) {new Start().setVisible(true);}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource() == btnRunter){
balkens[2].setText("neuer Text");
}
}
}
class Balken extends JLabel{
}
Soviel dazu.
Später möchte ich meine MosueEvents noch in eine extra .java auslagern. Aber da weiß ich dann noch weniger, wie ich jedem JLabel sein ClickEvent vermitteln kann. Da ich in der extra Klasse die balkens nicht ansprechen kann. Auch nicht wenn diese public sind. Ich glaube ich muss die Werte irgendwie kompliziert übergeben oder? Dazu auch ein kleines Beispiel. Aber mit einer Lösung für das obere wäre ich erstmal zufrieden.
Java:
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class MouseL implements MouseListener {
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("test");
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
}
Vielen Dank und
schöne Grüße