焦点不是通过方法设置来获取焦点

时间:2015-04-26 02:29:15

标签: java setfocus

学习编码,构建GUI以确定一切如何相互作用。尝试编写一个方法,在大型程序中我需要的点上设置焦点(组件) - 即调用FocusGrabber(JTextField1)并让它将输入焦点设置在JTextField1上。为了做到最好的SSCCE,我做了一个简单的主要内容,只需要足够的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);
    } 
}

1 个答案:

答案 0 :(得分:0)

使用requestFocusInWindow而不是grabFocus ...

如果您在某个时候调用run方法

,也会有所帮助

此外,不应该更像

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