Hoe geef ik in AWT een textveld de focus + cursor?

Status
Niet open voor verdere reacties.

PlusPlus

Gebruiker
Lid geworden
5 mei 2009
Berichten
73
Hallo,
Het lukt mij niet om als mijn applet verschijnt de focus + een knipperende cursor voor een textveld te krijgen.
Ik heb het geprobeerd met

mijnTextveld.setText("");
mijnTextveld.requestFocus();

vanuit init()
of vanuit een andere functie.:(

Maar er gebeurt niets.
Wat is de juiste manier?
 
PHP:
package ui;

import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class MyFrame extends JFrame{

	private JPanel panel = new JPanel(new GridLayout());
	private JTextField textField1 = new JTextField();
	private JTextField textField2 = new JTextField();

	public static void main (String[] args) {
		new MyFrame().initialize();
	}

	public void initialize() {
		textField1.setText("textfield 1");
		textField2.setText("textfield 2");

		/**
		 * Wat we hier hebben is the dark side of Java gui en een gekend probleem
		 * hier de oplossing die voor mij werkt:
		 */
		addWindowListener( new WindowAdapter() {
	    	public void windowOpened( WindowEvent e ){
	    		textField2.requestFocus();
	    	}
		} );
		/**
		 * dit is geen mooie oplossing maar je moet de AWT-thread forceren om de
		 * één of andere duistere reden
		 */

		panel.add(textField1);
		panel.add(textField2);
		add(panel);
		setSize(300, 80);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

}

Sorry, ik zag juist dat je een AWT textfield wou maar ik ga er van uit als je overal de "J" verwijderd je wel hetzelfde effect hebt.
 
PHP:
package ui;

import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class MyFrame extends JFrame{

	private JPanel panel = new JPanel(new GridLayout());
	private JTextField textField1 = new JTextField();
	private JTextField textField2 = new JTextField();

	public static void main (String[] args) {
		new MyFrame().initialize();
	}

	public void initialize() {
		textField1.setText("textfield 1");
		textField2.setText("textfield 2");

		/**
		 * Wat we hier hebben is the dark side of Java gui en een gekend probleem
		 * hier de oplossing die voor mij werkt:
		 */
		addWindowListener( new WindowAdapter() {
	    	public void windowOpened( WindowEvent e ){
	    		textField2.requestFocus();
	    	}
		} );
		/**
		 * dit is geen mooie oplossing maar je moet de AWT-thread forceren om de
		 * één of andere duistere reden
		 */

		panel.add(textField1);
		panel.add(textField2);
		add(panel);
		setSize(300, 80);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

}

Sorry, ik zag juist dat je een AWT textfield wou maar ik ga er van uit als je overal de "J" verwijderd je wel hetzelfde effect hebt.

Bedankt voor je antwoord.
Als ik thuis ben ga ik het uitproberen.
 
Hallo,
Het lukt mij niet om als mijn applet verschijnt de focus + een knipperende cursor voor een textveld te krijgen.
Ik heb het geprobeerd met

mijnTextveld.setText("");
mijnTextveld.requestFocus();

vanuit init()
of vanuit een andere functie.:(

Maar er gebeurt niets.
Wat is de juiste manier?
 
Ik heb het uitgeprobeerd in AWT maar het is mij niet gelukt.
Omdat het toch eens moest gebeuren en dit misschien het moment is, ben ik begonnen om Swing te leren.
Bedankt,
Kees
 
Als je toch overstapt op Swing (goed idee :) ) gebruik dan:

textField.requestFocusInWindow()

Je textField krijgt dan focus als je frame wordt getekend.

succes
 
Als je toch overstapt op Swing (goed idee :) ) gebruik dan:

textField.requestFocusInWindow()

Je textField krijgt dan focus als je frame wordt getekend.

succes
En ik maar sukkelen met die lelijke code, eerst dacht ik dat het niet werkte maar de frame moet al visible zijn en dan werkt textField.requestFocusInWindow() perfect, thanks :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan