Bean Listener hinzufügen und Methode später überschreiben

Status
Nicht offen für weitere Antworten.

Man-e-Faces

Aktives Mitglied
Hallo!
Ich habe ein echt blöd zu erklärendes Problem und hoffe sehr, dass es jemand versteht, weil ich alleine nicht weiterkomme..
Ich möchte Beans schreiben, die möglichst viel Arbeit ersparen sollen. Sie sollen deshalb möglichst auch EventListener implementieren. Aber das mit den EventListenern scheint nicht so zu klappen, wie ich es vorhabe:
Zum Beispiel stellt meine ButtonBean einen TextButton dar und fügt ihn einem KeyListener zu:


Code:
public class ButtonBean extends HContainer implements KeyListener{ 

public ButtonLook neuerLook; 
public HTextButton textButton = new HTextButton(); 

public TextButton() { 
getResources(); 
} 

public void getResources(){ 

textButton = new HTextButton("Label",0,0,100,50); 
setBounds(textButton.getBounds()); 
textButton.setBackgroundMode(textButton.BACKGROUND_FILL); 
this.add(textButton); 
textButton.addKeyListener(this);

} 
public void keyReleased(java.awt.event.KeyEvent KeyEvent){
}

public void keyPressed (java.awt.event.KeyEvent KeyEvent) {
}

public void keyTyped(java.awt.event.KeyEvent KeyEvent){
}

}
Natürlich weiß ich nicht, was später bei Knopfdruck passieren soll, deswegen überschreibe ich die Methode "keyPressed" zunächst nicht.

Will ich später die Bean benutzen instanziere ich die ButtonBean
in meiner neuen Klasse:

Code:
public class UseButtonBean {
    
    public UseButtonBean() {
        initComponents();
    }
    
    private void initComponents() {
        bean = new ButtonBean();

    }
    private ButtonBean bean;
    
    
}
Jetz kann ich aber die Methode keyPressed aus der ButtonBean nicht mehr überschreiben, oder?
Deshalb habe ich meiner ButtonBean-Instanz ebenfalls einen KeyListener hinzugefügt (und mit ihm auch eine keyPressed-Methode):
Code:
 private void initComponents() {
        ..

        bean.addKeyListener(this);

    }

    private void beanKeyPressed(java.awt.event.KeyEvent evt) {

 //hier dann irgendeine Aktion ausführen
        }

Allerdings klappt das so nicht, da ich den Listener ja jetzt nicht mehr dem Button IN der ButtonBean, sondern der ButtonBean hinzufüge!!! Die Methode "beanKeyPressed" hat so keine Wirkung, da der KeyListener des Buttons in der ButtonBean keine Wirkung hat...
Versteht mich irgendjemand da draußen?

Wie geht es besser? Oder kann ich die keyPressed-Methode der ButtonBean doch noch überschreiben?

Kann mir bitte jemand weiterhelfen???
 
R

Roar

Gast
Man-e-Faces hat gesagt.:
Oder kann ich die keyPressed-Methode der ButtonBean doch noch überschreiben?

natürlich kannst du!
in der zeit in der du den beitrag hier geschrieben hast, hättest du das 10 mal ausprobieren können.
 

Man-e-Faces

Aktives Mitglied
Danke Roar!
Denke nicht, dass ich faul bin. Ich hab es probiert.Kannst Du mir sagen, wie ich auf die keyPressed-Methode in der Klasse ButtonBean zugreifen kann?
 

Man-e-Faces

Aktives Mitglied
Naja, dass ich die Methode so aufrufen kann wusste ich schon.
Nur wie kann ich dann den Befehl übergeben? In der Methode steht ja nix drin!

Sowas wie:
Code:
int key = evt.getKeyCode();
if (evt.getSource() == textButton && key == KeyEvent.VK_ENTER){
//tue dies und das
}
eben an die keyPressed-Methode der Bean übergeben..
 
R

Roar

Gast
öhh ich kapier nich was du willst, die methode wird doch automatisch aufgerufen!? was wilslt du machen? :?
 

Man-e-Faces

Aktives Mitglied
Da die Methode am Anfang ja in der ButtonBean leer ist, möchte ich sie in der Klasse, in der die Bean benutzt wird, überschreiben. Da die ButtonBean ja immer verwendet werden soll und ich nicht weiß, was ich in verschiedenen Fällen bei Knopfdruck machen möchte, will ich die keyPressed-Methode erst in der Klasse überschreiben, die die Bean benutzt..Diesen Befehl möchte ich irgendwie in der keyPressed-Methode überschreiben!
Hast Dus verstanden?
 

KSG9|sebastian

Top Contributor
Zuerst mal würde ich die Key-Methoden in dem ButtonBean abstrakt machen

abstract void keyPressed(KeyEvent e);

Und/Oder so eben:
Code:
public class UseButtonBean { 
    
    public UseButtonBean() { 
        initComponents(); 
    } 
    
    private void initComponents() { 
        bean = new ButtonBean(){
           public void keyPressed(KeyEvent e){ 
          //tu was 
           }
           public void keyTyped(KevEvent e){ 
           //tu was anderes
           }
        }; 

    } 
    private ButtonBean bean; 
}
 

Man-e-Faces

Aktives Mitglied
Hallo KSG9..
Danke für Deine Hilfe.
Ich hab jetzt die Methode abstrakt gemacht. Leider muss ja dann auch meine Klasse abstrakt sein und ich kann sie dann nicht mehr als Bean verwenden.. Geht es auch anders?
 

Man-e-Faces

Aktives Mitglied
Gibt es denn keine Möglichkeit, abstrakte Methoden in einer nicht-abstrakten Klasse zu definieren und diese erst in einer Subklasse zu überschreiben??
 
R

Roar

Gast
ich weiß nich wo das problem ist. um die methoden zu überschreiben müssen sie nicht abstrakt sein.
 

KSG9|sebastian

Top Contributor
1. du kannst die methoden auch überschreiben ohne dass sie abstrakt sind
2. warum machst du nicht die ganze klasse abstrakt, ne logik enthält die doch eh nicht, oder ?
 

Man-e-Faces

Aktives Mitglied
Ich habe sie auch in der Subklasse überschrieben, leider passiert nichts, wenn der Button gedrückt wird:

Ich fasse nochmal zusammen:

Die ButtonBean erstellt nen Button mit keyListener und
meine Klasse useButtonBean instanziert diese ButtonBean und überschreibt dann die keyPressed-Methode der ButtonBean wie folgt:

Code:
public void ueberschreibe(){
bean = new ButtonBean(){ 
public void keyPressed(KeyEvent e){ 
int key = e.getKeyCode();
if (e.getSource() == ButtonBean.textButton && key == HRcEvent.VK_ENTER){
System.out.println("Button gedrückt!");  
}
}
};
}
Was passiert, wenn der Button gedrückt wird, ist: GARNIX!
 
R

Roar

Gast
schonmal den our.println an den anfang der methode gesetzt um einen fehler in deiner if anweisung auszuschließen?
 

KSG9|sebastian

Top Contributor
von was für nem bean redest du eigentlich? EJB ? Ich kann in deiner Struktur keinen JavaBean erkennen, nen EJB erst recht nicht :)
 

Man-e-Faces

Aktives Mitglied
OK, hier meine ButtonBean:

Code:
public class ButtonBean extends HContainer implements KeyListener, Serializable{


public HTextButton textButton = new HTextButton();
public DVBColor backgroundColor, foregroundColor, focusColor;
private String text;
private int buttonWidthX;
private int buttonHeightY;

public ButtonBean() {
getResources();
}

public void getResources(){

textButton = new HTextButton("Label me!",0,0,100,50);
setBounds(textButton.getBounds());
textButton.setBackgroundMode(textButton.BACKGROUND_FILL);
textButton.addKeyListener(this);
this.add(textButton);
}

public String getText() {
    return this.text;
}

public void setText(String text) {
this.text = text;
textButton.setTextContent(this.text,textButton.ALL_STATES);  
}

public int getButtonHeightY() {
return this.buttonHeightY;
}

public void setButtonHeightY(int buttonHeightY) throws java.beans.PropertyVetoException {
this.buttonHeightY = buttonHeightY;
textButton.setBounds(0,0,buttonWidthX,buttonHeightY);
}

public int getButtonWidthX() {
    return this.buttonWidthX;
}

public void setButtonWidthX(int buttonWidthX) throws java.beans.PropertyVetoException {
this.buttonWidthX = buttonWidthX;
textButton.setBounds(0,0,buttonWidthX,buttonHeightY);
}

public void keyPressed(java.awt.event.KeyEvent e){

//in der Bean leer, da offen bleiben soll, was passieren soll!!!

}
public void keyReleased(java.awt.event.KeyEvent e){
}
public void keyTyped(java.awt.event.KeyEvent e){
}
}

Das ist die useBean Klasse:
Code:
public class useBean extends Scene {

private ButtonBean bean;
       

public useBean() {
        initComponents();
}
    
private void initComponents() {

bean = new ButtonBean(){ 
public void keyPressed(KeyEvent e){ 
System.out.println("gedrückt");  
int key = e.getKeyCode();
if (e.getSource() == ButtonBean.textButton && key == HRcEvent.VK_ENTER){

//Hier irgendwas passieren lassen!!!
}
}
};
}
}
 
R

Roar

Gast
ähm... sicher dass du nichz zwei instanzen von bean hast? eine die angezeigt wird und eine in useBean ?
 

Man-e-Faces

Aktives Mitglied
Das sind alle Codes. Die ButtonBean und die Klasse, die die ButtonBean benutzt! That's it!
Fragst Du aus nem bestimmten Grund, warum ich zwei instanzen habe??
 

Man-e-Faces

Aktives Mitglied
Reden wir aneinander vorbei?
Wo ist das problem? Ich arbeite mit Netbeans, einer Java IDE..
Eigentlich geht es doch auch nur um das Überschreiben der keyPressed-Methode... :cry:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Abbruch einer ViewScoped Bean in Arbeit Allgemeine Java-Themen 2
bueseb84 required a bean of type that could not be found. Allgemeine Java-Themen 2
D Bean Zustandsänderung registrieren Allgemeine Java-Themen 2
E Die if-Anweisung in einer Java Bean bzw. in einem Servlet? Allgemeine Java-Themen 8
D JSF Bean Attribute bei Seitenaufruf Allgemeine Java-Themen 6
T Bean & xhtml Allgemeine Java-Themen 10
B Daten aus Bean holen Allgemeine Java-Themen 5
R boolean im Bean abfragen Allgemeine Java-Themen 18
A Standalone geht - JSP u. Bean nicht Allgemeine Java-Themen 6
M Acrobat Viewer Bean - EULA-Anzeige verhindern Allgemeine Java-Themen 4
M Problem bei PDF-Anzeige mittels Acrobat Viewer Bean Allgemeine Java-Themen 2
J die Bean oder das Bean Allgemeine Java-Themen 13
J bean + serialisierung + serialVersionUID Allgemeine Java-Themen 3
L Java Bean Allgemeine Java-Themen 8
H JSF - Wert an ein managed bean übergeben Allgemeine Java-Themen 2
berserkerdq2 Was heißt es mit FXML Listener zu setzen ind Buttons zu erstellen? Allgemeine Java-Themen 6
L Wie programmiert man einen Listener? Allgemeine Java-Themen 1
S Threads Serielle Schnittstelle mit Listener / Aufrufendes GUI Allgemeine Java-Themen 4
H Listener Verständnisproblem Allgemeine Java-Themen 5
D Action Listener Problem Allgemeine Java-Themen 3
S Key Listener mit Strg + s Allgemeine Java-Themen 12
K Threads Listener für Future finish Allgemeine Java-Themen 2
TheWhiteShadow Listener Reihenfolge Allgemeine Java-Themen 4
D Listener auf System.out.err / System.out.println Allgemeine Java-Themen 5
A Listener für constructor einer bestimmen Klasse Allgemeine Java-Themen 9
E Bild mit Listener einfügen Allgemeine Java-Themen 3
P Listener für Tastatureingaben ohne Focus Allgemeine Java-Themen 4
serjoscha WatchDog Thread und Listener Allgemeine Java-Themen 10
hdi Listener für Desktop-Veränderungen Allgemeine Java-Themen 7
T JTextField in Listener leeren Allgemeine Java-Themen 2
lenniii Listener & JList Allgemeine Java-Themen 3
K Key listener ohne Fokus aktiv behalten ? Allgemeine Java-Themen 12
G Code-Convention für Listener Allgemeine Java-Themen 2
T Observer vs Listener Allgemeine Java-Themen 18
S Listener Allgemeine Java-Themen 3
P Abstrakte Elternklasse als Listener Allgemeine Java-Themen 6
MQue KeyAction listener Allgemeine Java-Themen 2
M generische Listener Allgemeine Java-Themen 2
S Listener für Kalender Allgemeine Java-Themen 2
B Observer vs Listener (GUI-Programmierung) Allgemeine Java-Themen 5
J Listener für Ende eines Threads gesucht... Allgemeine Java-Themen 5
S Listener Implentierung bei Eingabe in Textfeld Allgemeine Java-Themen 2
G Objekt einer inneren Klasse als Listener Allgemeine Java-Themen 3
D Boolean Listener? Allgemeine Java-Themen 28
M Listener und Performance Allgemeine Java-Themen 9
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
Escorter Eigenen Listener schreiben Allgemeine Java-Themen 3
E Gibt es so etwas wie einen Windows Listener? Allgemeine Java-Themen 6
T SelectionProvider und Listener Frage Allgemeine Java-Themen 14
I Listener, der zeitlich-periodisch aufgerufen wird Allgemeine Java-Themen 3
R Generische Listener und Sender Allgemeine Java-Themen 12
B Listener dynamisch setzen Allgemeine Java-Themen 6
A Listener Tastatur Allgemeine Java-Themen 3
E Wie: Eigener Listener, eigenes Event (möglichst einfach) Allgemeine Java-Themen 29
D Thread vs Listener Allgemeine Java-Themen 6
K Listener einem Objekt hinzufügen Allgemeine Java-Themen 3
S Listener-Problematik in komplexem Projekt Allgemeine Java-Themen 2
I Listener/Event selber machen. Allgemeine Java-Themen 4
M Time Listener ? Allgemeine Java-Themen 2
Z Zwei Listener zwischen zwei Klassen Allgemeine Java-Themen 4
B statusbar update -> mit thread oder listener? Allgemeine Java-Themen 7
M Action-listener Allgemeine Java-Themen 6
G Flavor-Listener Allgemeine Java-Themen 6
E Listener für Änderung der Fenstergröße Allgemeine Java-Themen 3
W Listener an ein beliebiges Objekt hänger, der mir Änderung Allgemeine Java-Themen 8
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
A HILFE: subclass von Hashtable mit listener aufstellen Allgemeine Java-Themen 5
R -jar der Windows-Registry hinzufügen Allgemeine Java-Themen 1
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
C Java11+ JavaFX HtmlEditor ContextMenu neue MenuItems hinzufügen Allgemeine Java-Themen 5
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
CodingBerlin Zahlungsmethode hinzufügen in App Allgemeine Java-Themen 2
Y Wie kann ich ein erstelltes JPanel meinem Frame hinzufügen? Allgemeine Java-Themen 1
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Thallius Zeitzone zu einem LocalDate hinzufügen aber ohne es zu ändern... Allgemeine Java-Themen 2
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
A Website zur Ausnahmeliste hinzufügen (Mac) Allgemeine Java-Themen 3
K JDK installieren JavaDoc hinzufügen Allgemeine Java-Themen 10
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
KaffeeFan Artikel hinzufügen Allgemeine Java-Themen 3
T itext: text in ein textfeld hinzufügen Allgemeine Java-Themen 2
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
B Per Buttonklicks einer Liste Wörter hinzufügen - Wie umsetzen? Allgemeine Java-Themen 11
M Zeilen zu einem DefaultTableModel hinzufügen Allgemeine Java-Themen 1
T Windows-Kontextmenü Eintrag hinzufügen? Allgemeine Java-Themen 3
L Leerzeichen zu string hinzufügen, um eine gerade zahl zu erhalten Allgemeine Java-Themen 9
M lucene suchen/löschen/hinzufügen Allgemeine Java-Themen 4
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
J Elemente zu einer List hinzufügen? Allgemeine Java-Themen 9
S Java Applikation zu autostart hinzufügen Allgemeine Java-Themen 7
X Dynamisches hinzufügen von Panles Allgemeine Java-Themen 4
V Eclipse Projekte den BuildPath hinzufügen - Bester Weg? Allgemeine Java-Themen 6
S Hinzufügen von Elementen zu Listen Allgemeine Java-Themen 4
D Eintrag im Windows Kontextmenü hinzufügen Allgemeine Java-Themen 4
A PDFs splitten mergen und Seitenzhalen hinzufügen Allgemeine Java-Themen 5
G Anonymen Buttons in for schleife ActionListener hinzufügen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben