Ustawienie kursora na JTextField

0

Mam dwa pola tekstowe: Pole1 i Pole2. Co zrobić, aby kursor domyślnie ustawiał się na Pole2?

1
Pole2.requestFocus();
0

Poniżej public void actionPerformed(ActionEvent e) - działa. Co zrobić, aby po uruchomieniu programu, kursor oczekiwał w Pole2?

`dodanie znacznika ``` - @furious programming

0

Dopisz to na końcu konstruktora, przed

setVisible(true);
0

Ale chyba z wnętrza metody statycznej nie możemy odwołać się do Pole2, nie zadeklarowanego jako statyczne.
Wstawiam przykładowy kod.

public class Rozmowa_1_1 extends JFrame implements ActionListener
{
	private JTextArea Pole1;
	private JTextField Pole2;
	private JButton przyciskOK;
	private JLabel lTutajWpisz;

	
	public static void main(String[] args)
	{
		Rozmowa_1_1 aplikacja = new Rozmowa_1_1();
		aplikacja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		aplikacja.setVisible(true);
	}	
	
	public Rozmowa_1_1()
	{	
		setSize(1440,860);
		setTitle("ROZMOWA");
		setLayout(null);
	
		Pole1 = new JTextArea("");
		Pole1.setBounds(260,100,800,100);
		Pole1.setFont(new Font("Arial", Font.PLAIN, 15));
		add(Pole1);
		
		Pole2 = new JTextField("");
		Pole2.setBounds(450,275,400,50);
		add(Pole2);
		
		JButton przyciskOK = new JButton ("OK");
		przyciskOK.setBounds(600, 350, 80, 50);
		add(przyciskOK);
		przyciskOK.addActionListener(this);
		
		lTutajWpisz = new JLabel("Tutaj wpisz odpowiedź i zatwierdź przyciskiem OK");
		lTutajWpisz.setBounds(450, 230, 300, 50);
		add(lTutajWpisz);
		
		Pole1.setText("Jak masz na imię?");	
	}
	
	@Override
	public void actionPerformed(ActionEvent e)
	{
	
	   String pytania = Pole1.getText();
	   String odpowiedzi = Pole2.getText();
	   
	   if (pytania.equals("Jak masz na imię?") && odpowiedzi.equalsIgnoreCase("Ola"))
       {
           Pole1.setText("Cześć Ola! Ile masz lat?");
           Pole2.setText("");
           Pole2.requestFocus();
       }
 
       else if (pytania.equals("Cześć Ola! Ile masz lat?") && Integer.parseInt(odpowiedzi) == 10)
       {
           Pole1.setText("10 lat... To pewnie chodzisz do czwartej klasy. \nLubisz matematykę?");
           Pole2.setText("");
           Pole2.requestFocus();
       }
 
       else if (pytania.equals("10 lat... To pewnie chodzisz do czwartej klasy. \nLubisz matematykę?") && odpowiedzi.equalsIgnoreCase("Tak"))
       {
           Pole1.setText("To mam dla Ciebie zadanie. Ile to będzie: 8 x 9?");
           Pole2.setText("");
           Pole2.requestFocus();
       }  
	}

	public JButton getPrzyciskOK() 
	{
		return przyciskOK;
	}

	public void setPrzyciskOK(JButton przyciskOK) 
	{
		this.przyciskOK = przyciskOK;
	}		
}
0

Napisałem

Dopisz to na końcu konstruktora
.

0

Nie działa, chyba coś źle rozumiem.
Mam wstawić:

Pole2.requestFocus();

pod:

Pole1.setText("Jak masz na imię?");

?

dodanie znaczników <code class="java"> - @furious programming

0

Wczoraj przeczytałem gdzieś, że nie da się przez

requestFocus();

Naprawdę nie ma w JAVA prostego sposobu, żeby kursor oczekiwał w polu tekstowym, po uruchomieniu programu?

0

Fragment dokumentacji metody

requestFocus();

Note that the use of this method is discouraged because its behavior is platform dependent. Instead we recommend the use of requestFocusInWindow(boolean).

Korzystaj z dokumentacji https://docs.oracle.com/javase/8/docs/api/index.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1