How do you set a focus on Textfield in Swing?

前端 未结 5 1259
名媛妹妹
名媛妹妹 2020-12-30 18:33

I have created one form using Swing in Java.In the form I have used one textfield on which I have to set the focus whenever I press the key.How to set focus on a particular

相关标签:
5条回答
  • 2020-12-30 19:14

    Would Component.requestFocus() give you what you need?

    0 讨论(0)
  • 2020-12-30 19:14

    Note that all of the above fails for some reason in a JOptionPane. After much trial and error (more than the above stated 5 minutes, anyway), here is what finally worked:

            final JTextField usernameField = new JTextField();
    // ...
            usernameField.addAncestorListener(new RequestFocusListener());
            JOptionPane.showOptionDialog(this, panel, "Credentials", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);
    
    
    public class RequestFocusListener implements AncestorListener {
        @Override
        public void ancestorAdded(final AncestorEvent e) {
            final AncestorListener al = this;
            SwingUtilities.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    final JComponent component = e.getComponent();
                    component.requestFocusInWindow();
                    component.removeAncestorListener(al);
                }
            });
        }
    
        @Override
        public void ancestorMoved(final AncestorEvent e) {
        }
    
        @Override
        public void ancestorRemoved(final AncestorEvent e) {
        }
    }
    
    0 讨论(0)
  • 2020-12-30 19:16

    You can use also JComponent.grabFocus(); it is the same

    0 讨论(0)
  • 2020-12-30 19:29

    This would work..

    SwingUtilities.invokeLater( new Runnable() { 
    
    public void run() { 
            Component.requestFocus(); 
        } 
    } );
    
    0 讨论(0)
  • 2020-12-30 19:29

    Now that we've searched the API all we need to do is read the API.

    According to the API documentation:

    "Because the focus behavior of this method is platform-dependent, developers are strongly encouraged to use requestFocusInWindow when possible. "

    0 讨论(0)
提交回复
热议问题