当我单击“预览页面”按钮时,光标应移至开始位置(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");


java - 按下JButton时将光标转移到JTextField-LMLPHP

最佳答案

您需要执行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");

10-08 19:32