Java Event wird nicht aufgerufen

  • Hallo, ich bräuchte nochmal Hilfe in Java. Derzeit wird das Event nicht aufgerufen



    @Override
    public void actionPerformed(ActionEvent e)
    {
    System.out.println(KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner().toString());
    JButton source = (JButton)e.getSource();
    if(KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() == txtusername)
    {
    txtusername.setText(txtusername.getText() + source.getActionCommand());
    }
    else if(KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() == txtpassword)
    {
    txtpassword.setText(txtpassword.getText() + source.getActionCommand());
    }
    }


    kompletter Code


    http://pastebin.com/JtAcSgXK


    Ich bin über jede Hilfe dankbar

  • Schau mal:



    Java
    JButton button = new JButton("1");
    jButton108.addActionListener((ActionListener) this);
    jButton108.requestFocus();
    jButton108.setText("1");

    Wieso haste das abgeändert ^^


    Lösch diese erste Zeile mit dem button = new JButton("1"); raus..das brauchst nicht..diese Buttons wurden schon alle erstellt.


    Und du musst jeden Button dem ActionListener hinzufügen..


    Also überall für jeden button jButtonXYZ.addActionListener(this);


    Aber probier mal aus Spaß und klick auf die 1...da müsste was ausgegeben werden, da du den ja schon hinzugefügt hast ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ja


    javax.swing.JButton[,10,150,50x50,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@a0c52dd,flags=288,maximumSize=java.awt.Dimension[width=37,height=37],minimumSize=java.awt.Dimension[width=37,height=37],preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=1,defaultCapable=true]


    ich ergänze mal eben

  • ich scheine zu doof für zusein. Ich hab die eine zeile entfernt. Allerdings selbes muster


    // Edit Fehler gefunden aber nicht die Ahnung wie ich Ihn behebe, der Text gibt immer null aus also nichts. Daher kann auch nix reingeschrieben werden xD.


    //Edit


    Habs nun folgendermaßen


    Code
    System.out.print("1");

    allerdings springt er mir derzeit immer aus dem TextFeld raus. Wie kannn ich das ermitteln und ihm sagen das er im ausgewählten textfeld die 1 schreiben soll. Beim Button klick geht er immer raus

    2 Mal editiert, zuletzt von robbi2304 ()

  • Okay versuch mal folgendes:


    Java
    //Oben:
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;



    Und dann schreibste die Action so:



    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich habe derzeit einen Loginbereich erstellt der nun mit Tastatur Buttons funktionieren soll. Jenachdem welches Textfeld angeklickt ist, so soll er auch in das Textfeld den Wert reinschreiben der vorher mit dem Button definiert wurde.


    Derzeit verlässt er sofort die Form ohne einen Wert reinzuschreiben. Vielmehr registriert er das drücken des Buttons und schreibt in nichts einen vorher definierten Wert.


    Das ganze soll so nicht funktionieren und ich hoffe Ihr könnt mir dabei helfen.


    Als Anhang habe ich mal einen Screenshot angehängt damit eine Übersicht besser möglich ist


    Liebe Grüße

  • ok alles klar du musst eins beachten und zwar das Callback wird nicht aufgerufen, wenn du den ActionListener nicht setzst.
    Daher musst du bei deinen Button den Listener in deiner main - methode setzen.


    Das geht mit
    Bsp:
    JButton button = new JButton ();
    button.addActionListener(this);


    Dann wird dein Callback OnActionPerformed aufgerufen alternative kannst du auch mehrere Callbacks definieren.
    Siehe auch :
    http://www.java-tutorial.org/actionlistener.html


    Wenn du das gemacht hast kommen wir zum nächsten Punkt dem fokussierten Textfeld, dass kannst du so machen wie kaliber geschrieben hat, aber ich werde mal kurz dein Code genauer ansehen und mein Beitrag nochmal bearbeiten

  • also ich finde nirgends in deinem code sowas bei deiner Tastatur
    jButton161.addActionListener (this);


    Anscheinend gibt getFocusOwner nicht das zuletzt fokusierte element zurück daher solltest du den Code verwenden den Kaliber dir geschrieben hat. Der Code sieht soweit solide aus.

  • Bin noch etwas am verzweifeln. Sofern ich den Button drücke mit folgendem Cde



    erhalte ich folgende errors



    run:
    Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: e.getSource
    javax.swing.JButton[,28,39,84x72,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@46509e64,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=1,defaultCapable=true]
    at Secure.Login.jButton2ActionPerformed(Login.java:139)
    at Secure.Login.access$100(Login.java:8)
    at Secure.Login$2.actionPerformed(Login.java:66)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: e.getSource
    javax.swing.JButton[,28,39,84x72,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@46509e64,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=1,defaultCapable=true]
    at Secure.Login.jButton2ActionPerformed(Login.java:139)
    at Secure.Login.access$100(Login.java:8)
    at Secure.Login$2.actionPerformed(Login.java:66)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    BUILD SUCCESSFUL (total time: 6 seconds)

  • Was ist das wieder für ein Murks, also bissle mitdenken musst du schon !
    Du setzst hier 2 mal den ActionListener
    Und setActionCommand solltest du auch bei jedem Tastatur- Button setzen !


    Falls du nicht mehr mit deinem Code klar kommst erstelle doch ein seperaten projekt in eclipse und teste doch das was nicht so ganz funktioniert sprich button anklicken => OnActionPerformed soll aufgerufen werden => ausgabe in der konsole der ActionHandler !