Focus setzen – funktioniert nicht!



  • Habe ein einfachen Beispiel mit drei Componenten
    - Jbutton
    - JtextField
    - Jbutton

    Die Aufgabe ist:
    von Anfang an, den Focus auf das letzte Component zu setzen,
    habe alles ausprobiert - es funkt aber nicht.
    Kann jemand helfen?

    public Frame() {
        // button1.setNextFocusableComponent(button2);
        // button2.setFocusPainted(true);
        button2.requestFocus();
    
        this.getContentPane().add(button1, null);
        this.getContentPane().add(textField, null);
        this.getContentPane().add(button2, null);
    
        this.setSize(new Dimension(500, 200));
        this.setTitle("Frame-Titel");
        this.getContentPane().setLayout(flowLayout1);
      }
    

    mfg.

    Xman



  • du solltest
    button2.requestFocus();
    vielleicht aufrufen, nachdem du das Frame anzeigen läßt, da das Programm vorher noch keinen Focus hat (denk ich mal).
    zB so:

    public Frame() {
        // button1.setNextFocusableComponent(button2);
        // button2.setFocusPainted(true);
    
        this.getContentPane().add(button1, null);
        this.getContentPane().add(textField, null);
        this.getContentPane().add(button2, null);
    
        this.setSize(new Dimension(500, 200));
        this.setTitle("Frame-Titel");
        this.getContentPane().setLayout(flowLayout1);
    
        this.setVisibile(true);
        button2.requestFocus();
      }
    

    PS: Ich habs selbst nicht ausprobiert.



  • Der Fehler ist, dass du versuchst noch bevor das Fenster sichtbar ist den Focus zu setzen. Schreibe in deine Klasse einen Window-Handler für das Event "WINDOW_OPENED" und setze darin die Methode requestFocus ... dann klappts auch 🙂

    Hier ein Beispiel: [java]public class FocusTest extends javax.swing.JFrame
    {
    javax.swing.JButton btn1 = new javax.swing.JButton("btn1");
    javax.swing.JTextField tf1 = new javax.swing.JTextField("TextField mit gewissem Inhalt");
    javax.swing.JButton btn2 = new javax.swing.JButton("btn2");

    public FocusTest() {
    super("FocusTest");
    this.getContentPane().setLayout(new java.awt.FlowLayout());
    this.getContentPane().add(btn1);
    this.getContentPane().add(tf1);
    this.getContentPane().add(btn2);
    setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    this.addWindowListener(new java.awt.event.WindowAdapter() {
    public void windowOpened(java.awt.event.WindowEvent windowEvent) {
    System.out.println("Window Opened!");
    btn2.requestFocus();
    }
    });

    this.pack();
    this.setVisible(true);
    }

    public static void main (String args[]) {
    new FocusTest();
    }
    }[/code]Aha kam schon ein Beitrag aber ... @Ingo: Nach dem Aufruf von setVisible(true) kann man sich glaube ich nicht immer sicher sein dass das Fenster schon sichtbar ist - läuft ja alles in versch. Threads ab. Kann natürlich sein aber der Eventhandler passt immer.

    [ Dieser Beitrag wurde am 03.03.2003 um 19:12 Uhr von CengizS editiert. ]



  • ich DANKE Euch!

    werde gleich ausprobieren

    Xman


Anmelden zum Antworten