Mam dwa pola tekstowe: Pole1 i Pole2. Co zrobić, aby kursor domyślnie ustawiał się na Pole2?
Pole2.requestFocus();
Poniżej public void actionPerformed(ActionEvent e)
- działa. Co zrobić, aby po uruchomieniu programu, kursor oczekiwał w Pole2?
`dodanie znacznika ``` - @furious programming
Dopisz to na końcu konstruktora, przed
setVisible(true);
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;
}
}
Napisałem
Dopisz to na końcu konstruktora
.
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
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?
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