0

複数のテキスト フィールドとボタンがあります

テキストフィールド ボタン

テキストフィールドが選択されている場合、ボタンが押されたときにテキストが追加されます。

これが私が試した方法です

import javax.swing.text.JTextComponent;
    private void num9ActionPerformed(java.awt.event.ActionEvent evt) {                                            
            JTextComponent component = getFocuedComponent();
            component.setText( component.getText() + "9" );

    }

しかし、それは私にはうまくいきませんでした。

PS。マトリックス電卓を作ろうとしています。

編集:参考までに...これをどのように実装したか...SJuan76の回答の後....ありがとう!!

private JTextComponent selectedTextField;

// TextFields onFocus event
    private void a33FocusGained(java.awt.event.FocusEvent evt) {
        selectedTextField = (JTextComponent) evt.getSource();
    }
// action for button
        private void num9ActionPerformed(java.awt.event.ActionEvent evt) {                                            
                selectedTextField.setText( selectedTextField.getText() + "9" );

        }
4

3 に答える 3

1

あなたは問題を特定していないので、私は推測します。より良い答えが必要な場合は、より良い質問をしてください。

ボタンをクリックすると、inputtext のフォーカスはすでに失われています (そのボタンに転送されます)。

共有変数を更新するテキスト フィールドにリスナーを追加し、選択された最後の出力テキストをポイントします。actionevent を処理するときに、そのコンポーネントを更新します。

もちろん、意味がなくなったときに共有変数をリセットするという問題があります。

更新: API の一部だと思いgetFocusedComponent()ましたが、それへの参照が見つかりません。良い回答が必要な場合は、さらにコードを投稿する必要があります。

于 2012-10-10T10:37:07.640 に答える
1

選択した JTextComponent をクラス メンバーとして持つ必要があります。選択したコンポーネントをローカル変数に保存すると(これはあなたがしていると思います)、選択したコンポーネントは記憶されません。大まかな例:

public class YourClass  implements ActionListener
{
   private JTextComponent selectedTextField ; 
    ....
   void OnComponentSelected()
   {
     //init selectedTextField
   }
   void actionPerformed() 
   {
      //   selectedTextField.setText(...);
   }
}
于 2012-10-10T10:34:53.873 に答える
0

最後に選択したものを覚えて、JTextComponentボタンを押すとテキストを変更できます。したがって、フォーカスされたコンポーネントに依存しません。マウスのイベントを聞くことでそれを思い出すことができます。

于 2012-10-10T10:57:15.127 に答える