Focus setzen – funktioniert nicht!
-
Habe ein einfachen Beispiel mit drei Componenten
- Jbutton
- JtextField
- JbuttonDie 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