学习编码,构建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);
}
}
答案 0 :(得分:0)
使用requestFocusInWindow
而不是grabFocus
...
如果您在某个时候调用run
方法
此外,不应该更像
FocusGrabber fg = new FocusGrabber(textName);
fg.run();