当我单击“预览页面”按钮时,光标应移至开始位置(txtStartPosition)。以下是我编写的代码,但由于某种原因它无法正常工作。
btnPreviewPage = new JButton("Preview Single");
btnPreviewPage.setFocusable(false);
btnPreviewPage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
txtStartPosition.setCaretPosition(txtStartPosition.getCaretPosition() - 1);
new UIPreviewPage().execute();
}
});
panel.add(btnPreviewPage, "cell 1 18,alignx right");
最佳答案
您需要执行JTextField.requestFocus();
,或者更喜欢的JTextField.requestFocusInWindow();
https://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocus()
public void requestFocus()
请求此Component获得输入焦点。有关此方法的完整说明,请参考Component.requestFocus()。
请注意,不建议使用此方法,因为其行为取决于平台。相反,我们建议使用requestFocusInWindow()。如果您想获得有关焦点的更多信息,请参阅《 Java教程》中的“如何使用焦点子系统”部分。
Overrides:
requestFocus in class Component
Since:
1.4
See Also:
Component.requestFocusInWindow(), Component.requestFocusInWindow(boolean)
使用您的代码应该
tnPreviewPage = new JButton("Preview Single");
btnPreviewPage.setFocusable(false);
btnPreviewPage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//Add YourJTextField.requestFocusInWindow() here, but not sure if the other information is needed
txtStartPosition.setCaretPosition(txtStartPosition.getCaretPosition() - 1);
new UIPreviewPage().execute();
}
});
panel.add(btnPreviewPage, "cell 1 18,alignx right");