按JButton时将光标传输到JTextField

时间:2016-04-08 03:22:50

标签: java

当我点击"预览页面"按钮,光标应移动到开始位置(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");

enter image description here

1 个答案:

答案 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");