Как сделать так, чтобы курсор отображался в JTextField по умолчанию?

#java #swing #cursor #focus #jtextfield

#java #swing #курсор #фокус #jtextfield

Вопрос:

Я хочу, чтобы курсор отображался в «поле» JTextField по умолчанию. В настоящее время я должен поместить курсор в поле, прежде чем он появится. Вот код.

 class XYZ extends JFrame implements ActionListener {

    JTextField box = new JTextField();
    JButton again = new JButton("Restart");
    JButton ext = new JButton("Exit");

    XYZ() {
        box.addActionListener(this);
        again.addActionListener(this);
        ext.addActionListener(this);

        box.setPreferredSize(new Dimension(20,20));
        box.setHorizontalAlignment(JTextField.CENTER)

        JPanel s3 = new JPanel(new BorderLayout()); //This holds the 3 panels below
        JPanel restart = new JPanel(new BorderLayout()); //this holds a button
        JPanel leave = new JPanel(new BorderLayout());   //also holds a button

        //The following holds a JLabel and the textfield
        JPanel middle = new JPanel(new FlowLayout(FlowLayout.CENTER,20,0)); 
        JLabel j2 = new JLabel("Enter your guess!");

        middle.add(j2);
        middle.add(box);

        restart.add(again,BorderLayout.SOUTH);
        leave.add(ext,BorderLayout.SOUTH);

        //Adding the 3 panels to s3
        s3.add(middle,BorderLayout.CENTER);
        s3.add(restart,BorderLayout.WEST);  
        s3.add(leave,BorderLayout.EAST);
    }
}
 

Ответ №1:

Вы можете просто запросить фокусировку текстового поля с помощью вызова requestFocusInWindow . Просто вызовите это, как только будет виден фрейм, содержащий текстовое поле:

 box.requestFocusInWindow();
 

Комментарии:

1. @Avi вы должны принять этот ответ, чтобы плакат получил оценку, и вопрос не остался без ответа. Счастливого кодирования!