Hallo alle zusammen
Ich sitze gerade vor einem Problem welches mich ein wenig verzweifeln lässt.
Ich Habe mir eine - so zu sagen abstrakte - Klasse gebaut die folgendes soll.
==> : - einen Button erstellen
- diesem Button soll gleich eine Position, Größe und Text zugeteilt werden
- ( so und nun kommt mein Prob ) er soll auch gleich einen ActionListener bekommen
das Ganze könnte ich jetzt natürlich so gestalten ^^
Hier die Klasse
und hier der erstellende Konstruktor
Nun ist mir das aber zu unsauber jedes mal 10 Zeilen oder mehr code extra zu haben in meiner Methode in der eigentlich nur Konstruktoren stehen sollten.
Denn das ganze sieht nach 10 Buttons, nicht mehr so Sauber aus wie am Anfang und ich verliere den Überblick ( was nebenbei gesagt auch der Grund war warum ich das so programieren will, denn es soll als Basis für weitere fenster Dienen )
Jetzt zu meiner Idee die noch nicht funktioniert
Ich schiebe den Code erstmal vor und erkläre hinterher mein Problem genauer
so sollte es so ungefair ausehen.
hier wieder die Buttonklasse, das wichtige ist hier der parameter initinitButtonListener bl
und die Zeile this.addButtonListener(bl);
So und jetzt zu der initButtonListener Klasse die ich mir in etwa so vorgestellt habe
Ich weis jetzt aber nicht wie ich es in meiner erstellenden Methode so hinbekomme das alles Richtig ist und Funktioniert wie es soll
hier wieder die erstellende Methode, wie ich sie mir vorstelle
Ich hoffe ich habe alles ausführlich genug beschrieben damit man es gleich verstehen kann
Danke schon einmal im vorraus
MfG Cem
P.S. wer Rechtschreibfehler findet, darf sie behalten
Ich sitze gerade vor einem Problem welches mich ein wenig verzweifeln lässt.
Ich Habe mir eine - so zu sagen abstrakte - Klasse gebaut die folgendes soll.
==> : - einen Button erstellen
- diesem Button soll gleich eine Position, Größe und Text zugeteilt werden
- ( so und nun kommt mein Prob ) er soll auch gleich einen ActionListener bekommen
das Ganze könnte ich jetzt natürlich so gestalten ^^
Hier die Klasse
Java:
class initJButtons extends JButton {
/**
* the constructor of the initButtons class
*
* @param xPos
* @param yPos
* @param width
* @param heigth
* @param text
* @param panel
*/
public initJButtons(int xPos, int yPos, int width, int heigth,
String text, JPanel panel,ActionListener al ) {
this.setBounds(xPos, yPos, width, heigth);
this.addActionListener(al);
this.setText(text);
panel.add(this);
}
}
und hier der erstellende Konstruktor
Java:
public void initGuiStones(){
buttonPanel = new initJPanels(1, 500, 600, 100, Color.BLACK);
button = new initJButtons(1, 1, 100, 30, "click mich", buttonPanel, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(button)){
System.out.println("hallo");
}
}
});
}
Nun ist mir das aber zu unsauber jedes mal 10 Zeilen oder mehr code extra zu haben in meiner Methode in der eigentlich nur Konstruktoren stehen sollten.
Denn das ganze sieht nach 10 Buttons, nicht mehr so Sauber aus wie am Anfang und ich verliere den Überblick ( was nebenbei gesagt auch der Grund war warum ich das so programieren will, denn es soll als Basis für weitere fenster Dienen )
Jetzt zu meiner Idee die noch nicht funktioniert
Ich schiebe den Code erstmal vor und erkläre hinterher mein Problem genauer
so sollte es so ungefair ausehen.
hier wieder die Buttonklasse, das wichtige ist hier der parameter initinitButtonListener bl
und die Zeile this.addButtonListener(bl);
Java:
class initJButtons extends JButton {
/**
* the constructor of the initButtons class
*
* @param xPos
* @param yPos
* @param width
* @param heigth
* @param text
* @param panel
*/
public initJButtons(int xPos, int yPos, int width, int heigth,
String text, JPanel panel,initButtonListener bl ) {
this.setBounds(xPos, yPos, width, heigth);
this.addButtonListener(bl);
this.setText(text);
panel.add(this);
}
}
So und jetzt zu der initButtonListener Klasse die ich mir in etwa so vorgestellt habe
Java:
class initButtonListener {
public initButtonListener(int i, final initJButtons button) {
switch (i) {
case 1:
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(button)){
System.out.println("hallo");
}
}
};
break;
default:
System.out.println("This ActionListener doesn´t exist. Make sure you implement a new Actionlistener ");
break;
}
}
}
Ich weis jetzt aber nicht wie ich es in meiner erstellenden Methode so hinbekomme das alles Richtig ist und Funktioniert wie es soll
hier wieder die erstellende Methode, wie ich sie mir vorstelle
Java:
public void initGuiStones(){
buttonPanel = new initJPanels(1, 500, 600, 100, Color.BLACK);
button = new initJButtons(1, 1, 100, 30, "click mich", buttonPanel, new initButtonListener(1, button));
}
Ich hoffe ich habe alles ausführlich genug beschrieben damit man es gleich verstehen kann
Danke schon einmal im vorraus
MfG Cem
P.S. wer Rechtschreibfehler findet, darf sie behalten