【发布时间】:2017-04-14 11:40:42
【问题描述】:
我有一个主要带有滑块和组合框的 GUI 应用程序。我使用滑块和组合来更改项目中各个类的值和参数。我正在尝试实现保存和加载此参数的可能性,并且我已经使用首选项 API 完成了此操作。 我可以保存和加载参数,但是当我加载它们时,我可以看到值的变化,这样就可以了,但是 GUI 不会更新以反映这些新值。有没有办法告诉 GUI 这样做?
例如,我有一个频率滑块,可以改变振荡器中的频率值。如果我用滑块更改值,保存它,再次更改滑块的值,然后加载保存的值,我可以听到它已经改变但滑块没有移动。(有道理,因为我没有告诉它也)。我可以以某种方式将滑块的位置与该频率值绑定吗?
桂
//OSC1 slider
JSlider Osc1FreqSlider = new JSlider(SwingConstants.HORIZONTAL, MIN_OSC_FREQ, MAX_OSC_FREQ, NOTE_A_FREQ);
Osc1FreqSlider.setOpaque(false);
Osc1FreqSlider.setMajorTickSpacing(50000);
Osc1FreqSlider.setMinorTickSpacing(50);
Osc1FreqSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider) e.getSource();
settings.setOsc1Freq((float)source.getValue()/100);
}
});
设置类
public void setOsc1Freq(float freq) {
m_Osc1Freq = freq;
}
【问题讨论】:
-
是的,有办法,但它的实现将完全取决于您的代码。
-
好的,所以滑块移动,调用保存值的单例类中的 set 方法。当我保存时,我使用 get 方法获取值,当我加载时,我使用该单例类中的 set 方法设置它如果你告诉我哪些细节可能对你有帮助,我很乐意告诉你我所能做的一切。感谢您的帮助:)
-
请考虑发布相关代码,minimal reproducible example,与您的问题。
标签: java user-interface combobox preferences jslider