2016-04-08 18 views
0

「プレビューページ」ボタンをクリックすると、カーソルが開始位置(txtStartPosition)に移動するはずです。以下は私が書いたコードですが、どういうわけかそれは動作しません。JButtonを押したときにカーソルをJTextFieldに移動

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

+0

あるべき多分 'のrequestFocus()'メソッド – 3kings

+0

カーソルやフォーカスを見て?フォーカスがあれば、 'txtStartPosition.requestFocus()'を使うことができます。 – Gerardo

答えて

1

あなたはJTextField.requestFocus();を行うか、このコンポーネントが入力フォーカスを取得し、より好ましいJTextField.requestFocusInWindow();

https://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocus()

public void requestFocus() 要求する必要があります。このメソッドの詳細については、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"); 
+0

こんにちは、@Lasagna あなたの専門知識の説明に感謝します。 JTextField.requestFocusInWindow()を使用してコードを変更した後。それは完全に動作します。 あなたのお手伝いをよろしくお願いします。 – coder

+0

素晴らしいです、私は助けることができてうれしいです!あなたのプロジェクトに幸運を祈る! – XaolingBao

関連する問題