JComponent
最小の例として、相互にやり取りする必要がある3 つの Swing要素 ( aJSlider
と two ) がありJTextFields
ます。はJSlider
0 から 50 まであり、JTextField の 1 つは JSlider の値をJTextField
示し、2 番目は合計値のパーセンテージを示します (つまり、JSlider
の 2 は 2 番目の 4% を更新しJTextField
ます)。
3 つの要素のいずれかを変更すると、他のすべての要素が更新されます。したがって、の は のイベントをトリガーする必要がChangeEvent
あります。ただし、 which のトリガーは、この場合、 の値の変更をトリガーする必要があります。JSlider
setText()
JTextFields
setText()
ActionEvents
TextFields
JSlider
/boolean
を処理する前にブール値がチェックされる「更新」フラグを使用して、この問題に取り組んできました。しかし、 /ループを防ぐためのプログラムまたはよりクリーンな方法があるかどうかを知りたいです。ActionEvent
ChangeEvent
ActionEvent
ChangeEvent
洞察をいただければ幸いです。
編集
パーセンテージ値がスライダー値と正確に一致しない (つまり、丸め誤差がある) ヒストグラム情報でこれを機能させようとしています。提案されたSpinSlidersは、setText()
メソッドが最終値で「解決」できることに依存しています。つまり、 に入力された値setText()
が既に保持されているテキストと同じである場合、 は起動されずActionEvent
、効果的にループが終了します。丸めがオフの場合、setValue()
のJSlider
と のsetText()
は、JTextField
丸めによって「平衡」状態に達することはありません。問題が簡潔に説明されていることを願っています。