2

私はこのコードを持っています:

this.trigger = new Trigger();
this.presentationModel = new PresentationModel(this.personBean, this.trigger);
final ValueModel firstNameAdapter = presentationModel.getBufferedModel("firstName");
final JTextField firstNameTextField = BasicComponentFactory.createTextField(firstNameAdapter);

firstNameTextField.addActionListener(new ActionListener() 
    {
        @Override
        public void actionPerformed(ActionEvent e) 
        {
            trigger.triggerCommit();
        }
    });

したがって、のEnterボタンを押すと、クラスの値がの値と同じになるJTextFieldと予想されます。これは、の外側をクリックしてから内側に戻り、Enterキーを押さない限り発生しません。テキストを入力してEnterキーを押すだけでは、更新された値は取得されません。私はこの問題で立ち往生しています、誰か助けてもらえますか?ValueModelJTextFieldJTextFieldJTextFieldValueModel

ところで、私は最初にJGoodiesを理解するためにこのリンクを使用しました:JGoodiesチュートリアル

4

3 に答える 3

0

私はあなたの質問を正しく理解していることを願っています。

テキストフィールドでテキストを取得し、ValueModelに設定する必要があります。

firstNameTextField.addActionListener(new ActionListener()      
{         
    @Override         
    public void actionPerformed(ActionEvent e)          
    {
       //this get the text from the text field
       String firstName = firstNameTextField.getText();

       //now write your code to set the firstname into the ValueModel


       trigger.triggerCommit();
    }     
 }); 
于 2011-01-18T17:39:20.940 に答える
0

JGoodies APIを調べたところ(これはもっと早く実行する必要がありました)、予期しない静的呼び出しBindings.commitImmediately()が見つかりました。

trigger.triggerCommit()を呼び出す前にこのメソッドを呼び出すと、すべてが期待どおりに機能します:)

于 2011-01-18T19:12:24.053 に答える
0

フォーカスが失われたときではなく、入力された各キーにコミットするテキストフィールドを作成します。

BasicComponentFactory.createTextField(firstNameAdapter, false);

また、バッファリングされたモデルを使用しないようにプログラムを設計することを検討する必要があります。それらは物事をより複雑でトリッキーなものにしていることがわかり、KarstenLentzschがメーリングリストでもそれらを使用しないことを推奨しているのを見たと思います。

JGoodiesを学ぶための最も便利な方法は、JGoodiesバインディングおよび検証ライブラリのチュートリアルコードを確認することでした。

于 2011-02-02T20:51:39.647 に答える