焦点未通过方法设置以获取焦点
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();
学习编码,构建 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();