焦点未通过方法设置以获取焦点

Focus not being set by method to grab focus

学习编码,构建 GUI 以弄清楚一切是如何交互的。尝试编写一种方法来在较大程序中我需要的点上将焦点设置在(组件)上 - 即调用 FocusGrabber(JTextField1) 并将输入焦点设置在 JTextField1 上。为了尽我最大的努力,我制作了一个简单的主程序,它的 GUI 足以提供 2 个文本字段,应该将焦点放在第二个上。

package ODIN;
import java.awt.Component;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
/*
*/
class FocusGrabber implements Runnable {
    private JComponent component;
    public FocusGrabber(JComponent component) {
        this.component = component;
    }
    @Override
    public void run() {
        component.grabFocus();
    }

    public static void main(String[] args){
        //draw and show the GUI
        JFrame GUI = new JFrame();
        GUI.setTitle("New Provider Interface");
        GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JTextField textID = new JTextField("providerID ", 20);
        final JTextField textName = new JTextField("Provider Name ", 20);

        GUI.add(textID);
        GUI.add(textName);
        GUI.pack();
        GUI.setVisible(true);
        FocusGrabber(textName);
    } 
}

使用 requestFocusInWindow 而不是 grabFocus...

如果您在某个时候调用 run 方法也会有帮助

还有,是不是应该更像

FocusGrabber fg = new FocusGrabber(textName);
fg.run();