3

「titleField」に入力されたものを「artistField」に表示されるように、文字列変数 title に渡すことで設定しようとしています。

titleField にテキストを入力して Enter キーを押しても、artistField に何も表示されない

誰かが私が間違っていることを教えてもらえますか?

titleField.addPropertyChangeListener(new PropertyChangeListener() {
    public void propertyChange(PropertyChangeEvent e){

        Object source = e.getSource();
        if (source == titleField) {
            title = (String)titleField.getValue();
        }
    }
});
artistField = new JFormattedTextField();
artistField.setText(title);
4

3 に答える 3

2

を使用する必要がありますか、またはcamickr が提案するJFormattedTextFieldように を使用できますか? 何を使っていますか?JTextFieldDocumentListenerFormatter

propertyChange()プロパティが変更されたときに実行されるのは、メソッド内のコードのみです。artistFieldそのため、そのメソッドから更新する必要があります。また、実際のコンテンツではなくテキストのみを更新するため、代わりにJFormattedTectFields使用して更新する必要があります。setValue()setText()setText()

この PropertyChangeListener を試してください:

titleField.addPropertyChangeListener("value", new PropertyChangeListener() {
    public void propertyChange(PropertyChangeEvent e){

        Object source = e.getSource();
        if (source == titleField) {
            String title = (String)titleField.getValue();
            artistField.setValue(title);
        }
    }
});

を処理できる がJFormattedTextField必要です。これは、同じ文字列を返すだけのばかげたフォーマッタです ( aが必要ない場合は、a と aを選択することをお勧めします)。FormatterStringJTextFieldDocumentListenerFormatter

class StringFormatter extends AbstractFormatter {

    @Override
    public Object stringToValue(String text) throws ParseException {
        return text;
    }

    @Override
    public String valueToString(Object value) throws ParseException {
        return (String)value;
    }

}

JFormattedTextField次のように初期化するときに使用します。

JFormattedTextField titleField = new JFormattedTextField(new StringFormatter());
于 2011-12-10T21:49:14.770 に答える
1

getValue の前に commitEdit を呼び出してみてください。ここで Java Doc をチェックしてください。

于 2011-12-10T21:29:57.267 に答える
1

titleField にテキストを入力して Enter キーを押しても、artistField に何も表示されない

が押されたときに何らかの処理を行う必要がある場合Enterは、ActionListener を使用する必要があります。ActionListion は、JFormattedTextField または JTextField に追加できます。次に、ActionLIstener コードでテキストを取得し、他の変数をリセットできます。

于 2011-12-10T22:31:00.930 に答える