7

ユーザーが JTextArea のコンテンツを更新するか、手動で JButton を押して何かをトリガーするアプリケーションを開発しています。

DocumentListener を使用して最初の部分を実行し、関連するコードをそのinsertUpdateメソッドに配置しました。

以前に sを使用したことはありませんActionが、複数のコントロールによって何かをトリガーする必要がある場合に役立つと聞きました。DocumentListener からアクションをトリガーすることは可能ですか? アクションを使用するのは良い考えですか、それともコードを通常の方法に置くべきですか?

(コンストラクターで):

    textAreaInput.getDocument().addDocumentListener(new DocumentListener() {
        public void insertUpdate(DocumentEvent e) {
            // do something
        }
        public void removeUpdate(DocumentEvent e) {}
        public void changedUpdate(DocumentEvent e) {}
    });

フィールドである Action:

Action doSomething = new AbstractAction("Do Something!") {
    @Override
    public void actionPerformed(ActionEvent e) {
        // do it
    }
};

説明:

JTextArea は、ユーザーが貼り付けたテキストを受け取ります。これを自動的に解析したいと考えています。解析は、GUI の他の場所で設定された他の値に依存します。ユーザーがこれらの他の値を変更した場合、テキストを再解析したい場合があるため、ボタンを押して同じアクションを実行する必要があります。

4

3 に答える 3

2

I think you need not create the Action object. You can add ActionListener to the Button just like you have added DocumentListener to the Document of the input. If I correctly understand your problem, may be you should do something like this:

textInput.getDocument().addDocumentListener(new DocumentListener(){             
    @Override
    public void insertUpdate(DocumentEvent e) {
        doIt();
    }               
    @Override
    public void removeUpdate(DocumentEvent e) {}                
    @Override
    public void changedUpdate(DocumentEvent e) {}
});

button.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        doIt();
    }
});

doIt() is a method in which you will do what you wanted to do.

于 2011-09-07T03:17:21.117 に答える