FocusEvent Textfeld

Anfänger86

Grünschnabel
Hallo, ich habe folgenden Code:

Code:
import java.awt.*;
import java.awt.event.*;


public class EA4_2 extends Frame {

    private int textfield1=0;
    private String textfield2;

    EA4_2(String titel) {
        super(titel);
        setSize(400, 400);
        setVisible(true);
        add(label);
        add(panel);
        MeinWindowAdapter meinWa = new MeinWindowAdapter();
        addWindowListener(meinWa);
        init();
    }

     Label label = new Label();
     Panel panel = new Panel();
     TextField textfield = new TextField("0", 20);
     Button button1 = new Button("Inkrementieren");
     Button button2 = new Button("Dekrementieren");

     public void init() {

         panel.add(textfield);
         textfield.addFocusListener(new MyTextField());

         panel.add(button1);
         button1.addActionListener (new MyActionListener());
         panel.add(button2);
         button2.addActionListener (new MyActionListener());
         add(panel);
         panel.add(textfield);  
     }


     class MyTextField extends TextField implements FocusListener {

         public void processFocusEvent(FocusEvent e) {
             super.processFocusEvent(e);
            if(e.getID()==FocusEvent.FOCUS_GAINED) {
                System.out.println("Fokus");
            }
        }

        public void focusLost(FocusEvent e) {}

        public void focusGained(FocusEvent e) {}
    }
     
     class MeinButton {

     }

     class MyActionListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            
            if (e.getSource() == button1) {
                 ++textfield1;
                 textfield2=("" +textfield1);
                 textfield.setText(textfield2);
        }
            if (e.getSource() == button2) {
                --textfield1;
                textfield2=("" +textfield1);
                textfield.setText(textfield2);
            }
        }
     }

     class MeinWindowAdapter extends WindowAdapter {
       public void windowClosing(WindowEvent e) {
           System.exit(0);
       }
   }

    public static void main (String [] args) {
     new EA4_2("EA4_2 FocusEvent");
    }

     }

Ich soll die Methode processFocusEvent überschreiben...
Wenn der Fokus auf dem Textfeld ist, soll auf der Konsole "Fokus" ausgegeben werden...
Aber ich mit getID() geht das net... ich müsste da ja sowas haben wie getSource() == textfield , aber dann passt der rest nicht mehr dazu...
kriege ich das so doch irgendwie hingebastelt oder geht das so nicht?
 
öhm, welche jetzt genau? also das ist ja so vorgegeben... eine class MyTextField mit Methode processFocusEvent um den Fokus auf das Textfeld zu legen...
 
Warum benutzt du nicht einfach
Java:
public void focusGained(FocusEvent e) {
	System.out.println("Fokus");
}
 
Ich hatte leider noch nie etwas mti der Methode zu tun gehabt, aber nachdem ich ein wenig nachgeschlagen habe, habe ich gemerkt, dass du den Sinn der Methode nicht ganz verstanden hast.

Processes focus events occurring on this component by dispatching them to any registered FocusListener objects.
This method is not called unless focus events are enabled for this component. Focus events are enabled when one of the following occurs:


A FocusListener object is registered via addFocusListener.
Focus events are enabled via enableEvents.
 
Zuletzt bearbeitet:
ne ich habe das auch überhaupt nicht verstanden.... weiß nicht wozu das gut sein soll und wie ich das mit der abfrage nach meinem textfeld kombinieren soll...

ich darf kein focusGained nehmen ;) ich muss processFocusEvent nehmen....
aber ich sehe darin keinen rechten sinn

ich versuche seit ewig dazu mal ein beispiel zu finden, aber ich finde immer nur allgemeines oder nur auf ein frame bezogen, aber nicht auf ein textfeld oder button oder so... ich muss ihm ja irgendwie sagen worauf er sich beziehen soll
 
Das machst du mit den addFocusListener() ja schon. Was für eine Component-Subclass es ist ist doch egal.
 
ne ist nicht egal, weil es von meinem prof so vorgegeben ist ;) das MUSS mit der methode sein...
aber ich verstehe denn sinn darin einfach nicht...
 
Du überschreibst doch aber garnicht die Methode von deinen Textfeldern, dein MyTextField ist in deinem Code lediglich die Klasse, welche deine Events verwaltet.
Éventuell willst du ja ein Objekt davon deinem Panel hinzufügen, aber das tust du nicht. Siehe folgender Zeile:
Java:
TextField textfield = new TextField("0", 20);
 
Zuletzt bearbeitet:
das textfeld hab ich doch meinem panel zugefügt...
ich weiß einfach nicht was die methode processFocuseEvent bewirken soll... wozu sie da ist... ich finde dazu kein sinniges beispiel und verstehe das einfach nicht....

das ist das gleiche wie mit dem processActionListener...
den soll ich da auch einbauen, zusätzlich zu meinem ActionListener, aber ich habe keine ahnung wozu die methode überhaupt benutzt wird... deswegen hab ich auch keine ahnung wie ich das basteln soll...
 
Zurück