当我点击"预览页面"按钮,光标应移动到开始位置(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");
答案 0 :(得分:1)
您需要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");