1

对于最小的示例,我有三个JComponent需要相互交互的 Swing 元素: aJSlider​​和 two JTextFields。从JSlider0 到 50,其中一个 JTextFields 显示 JSlider 的值,第二个JTextField显示总值的百分比(即,第二个中的 2JSlider将更新 4% JTextField)。

这三个元素中的任何一个的更改都应该更新所有其他元素。所以一个ChangeEventJSlider应该触发setText()的事件JTextFields。但是,在这种情况下,其中的setText()触发器应该触发.ActionEventsTextFieldsJSlider

我一直在用“刷新”标志来解决这个问题,在处理/boolean之前会检查布尔值。但我想知道是否有任何更程序化或更清洁的方法来防止/循环。ActionEventChangeEventActionEventChangeEvent

我将不胜感激任何见解!


编辑

我正在尝试使用直方图信息进行这项工作,其中百分比值与滑块值不完全匹配(即会有舍入错误)。建议的SpinSliders依赖于setText()能够“解决”最终值的方法。换句话说,如果输入到的值setText()与它已经保存的文本相同,它不会触发ActionEvent,有效地结束循环。如果舍入关闭,则setValue()JSlidersetText()JTextField将永远不会由于舍入而达到“平衡”状态。我希望简明扼要地描述问题。

4

1 回答 1

1

SpinSlider可能是一个有用的起点。由于您必须能够“确定”最终值,getValueIsAdjusting()因此一旦最终值可用,请使用更新。

于 2013-12-03T18:52:34.633 回答