2011-12-10 5 views
3

を動作していませんtitleField、enterを押しても、何も表示されません。...私は私がにテキストを入力する文字列変数タイトル</p> <p>を通過させることにより、「artistField」に登場する「titleField」に入力されているものを設定しようとしている

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

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); 
+0

あなたのすべてのコメントを読むのが面倒すぎるので、すでに議論されている場合は無視してください:-) titleFieldがJFormattedTextFieldで、Formatterがenterでコミットすると、PropertyChangeListenerが呼び出されます。ちょうど:何も表示されません。これは、artistFieldの_property_(text/value)ではなく、_String_フィールドを更新します.FinderFieldは、関連のないメンバーに変更を認識させることはできません:-) – kleopatra

答えて

1

おそらくgetValueの前にcommitEditを呼び出してみてください。 Java Doc hereをチェックしてください。

+0

しかし、それはうまくいくはずですよね? – Axschech

2

あなたはJFormattedTextFieldを使用する必要がありますか、またはDocumentListenerJTextFieldを使用することはできますか?どのようなFormatterを使用していますか?

プロパティが変更されたときに実行されるのはpropertyChange()メソッドのコードだけです。したがって、その方法からartistFieldを更新する必要があります。 setText()は実際の内容ではなくテキストのみを更新するため、setText()ではなくJFormattedTectFieldssetValue()で更新する必要があります。

このの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); 
     } 
    } 
}); 

あなたJFormattedTextFieldStringを扱うことができるFormatterを必要とします。ここだけの同じ文字列を返しダムフォーマッタです(JTextFieldは、あなたが必要としない場合DocumentListenerは良い選択ですFormatter):

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; 
    } 

} 

あなたはinitiliseたときにあなたがそれを使用JFormattedTextFieldのように:

JFormattedTextField titleField = new JFormattedTextField(new StringFormatter()); 
+0

hmmm okですが、他のクラスでも使用できるように、「変数を送信する」という方法がありますか? – Axschech

+0

@ user1091665: 'PropertyChangeListener'を実装するクラスを作成し、そのフィールドをコンストラクタに渡すことができます。 – Jonas

+0

これはうまくいきませんでした。( – Axschech

1

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

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

関連する問題

 関連する問題