将 JSlider 旋钮绑定到外部 int 值
Bind JSlider knob to an external int value
我的 JSlider
有一个 iconScaleManager
作为属性。 iconScaleManager
拥有一个 int
,其值对应于 JSlider
刻度。 int
被另一个 class 修改,一个 ActionListener
添加到 2 个 JButtons.
目标是:我希望旋钮自行移动到与刻度线相对应的 int
的实际值。
我想我需要绑定值或触发事件,但我不知道该怎么做。
当然,我在 JSlider 上添加了一个 ChangeListener :
public class SliderListener implements ChangeListener {
private int sliderIndex = 0;
private IconScaleManager iconScaleManager = null;
public SliderListener(int startingIndex, IconScaleManager renderer) {
sliderIndex = startingIndex;
iconScaleManager = renderer;
}
@Override
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
sliderIndex = source.getValue();
iconScaleManager.scaleSlider(sliderIndex);
}
}
为了更简单的使用,我将按钮的 ActionListener
更改为 actionPerformed()
中的 JSlider
(setValue(iconScaleManager.getScaleIndex())
) 的状态。 (这比我想象的要简单)。感谢@MadProgrammer。
public class ZoomListener implements ActionListener {
private boolean zoomIn = false;
private JSlider zoomSlider = null;
private IconScaleManager iconScaleManager = null;
public ZoomListener(boolean zoom, JSlider slider, IconScaleManager renderer) {
zoomIn = zoom;
zoomSlider = slider;
iconScaleManager = renderer;
}
@Override
public void actionPerformed(ActionEvent e) {
iconScaleManager.scaleButton(zoomIn);
System.out.println(iconScaleManager.getScaleIndex());
zoomSlider.setValue(iconScaleManager.getScaleIndex());
}
}
我的 JSlider
有一个 iconScaleManager
作为属性。 iconScaleManager
拥有一个 int
,其值对应于 JSlider
刻度。 int
被另一个 class 修改,一个 ActionListener
添加到 2 个 JButtons.
目标是:我希望旋钮自行移动到与刻度线相对应的 int
的实际值。
我想我需要绑定值或触发事件,但我不知道该怎么做。
当然,我在 JSlider 上添加了一个 ChangeListener :
public class SliderListener implements ChangeListener {
private int sliderIndex = 0;
private IconScaleManager iconScaleManager = null;
public SliderListener(int startingIndex, IconScaleManager renderer) {
sliderIndex = startingIndex;
iconScaleManager = renderer;
}
@Override
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
sliderIndex = source.getValue();
iconScaleManager.scaleSlider(sliderIndex);
}
}
为了更简单的使用,我将按钮的 ActionListener
更改为 actionPerformed()
中的 JSlider
(setValue(iconScaleManager.getScaleIndex())
) 的状态。 (这比我想象的要简单)。感谢@MadProgrammer。
public class ZoomListener implements ActionListener {
private boolean zoomIn = false;
private JSlider zoomSlider = null;
private IconScaleManager iconScaleManager = null;
public ZoomListener(boolean zoom, JSlider slider, IconScaleManager renderer) {
zoomIn = zoom;
zoomSlider = slider;
iconScaleManager = renderer;
}
@Override
public void actionPerformed(ActionEvent e) {
iconScaleManager.scaleButton(zoomIn);
System.out.println(iconScaleManager.getScaleIndex());
zoomSlider.setValue(iconScaleManager.getScaleIndex());
}
}