从自定义的 JSlider 中获取双精度值
Fetch double value from customized JSlider
我创建了一个从 0 到 1 的 JSLider,增量为 0.1。我编写了以下代码来实现它,但我不确定如何从滑块中获取值,因为函数 getValue() 仅获取整数值。在我的例子中,无论我将滑块移动到哪里,它总是获取 10。谁能告诉我如何从我的滑块中获取双精度值。
slider=new JSlider();
slider.setMajorTickSpacing(1);
slider.setMaximum(10);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setPreferredSize(new java.awt.Dimension(230, 46));
Format f = new DecimalFormat("0.0");
Hashtable<Integer, JComponent> labels = new Hashtable<Integer, JComponent>();
for(int i=0;i<=10;i++){
JLabel label = new JLabel(f.format(i*0.1));
label.setFont(label.getFont().deriveFont(Font.PLAIN));
labels.put(i,label);
}
slider.setLabelTable(labels);
监听器的代码如下
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
if(!slider.getValueIsAdjusting())
{
double value = slider.getValue();
System.out.println("value"+value);
}
}
});
提前致谢。
此致,
科林
您的代码按原样完美运行。
我做的唯一改变是除以 10.0,所以我们得到一个双倍数:
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
if (!slider.getValueIsAdjusting()) {
double v = slider.getValue() / 10.0;
System.out.println("value: "+v);
}
}
});
我创建了一个从 0 到 1 的 JSLider,增量为 0.1。我编写了以下代码来实现它,但我不确定如何从滑块中获取值,因为函数 getValue() 仅获取整数值。在我的例子中,无论我将滑块移动到哪里,它总是获取 10。谁能告诉我如何从我的滑块中获取双精度值。
slider=new JSlider();
slider.setMajorTickSpacing(1);
slider.setMaximum(10);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setPreferredSize(new java.awt.Dimension(230, 46));
Format f = new DecimalFormat("0.0");
Hashtable<Integer, JComponent> labels = new Hashtable<Integer, JComponent>();
for(int i=0;i<=10;i++){
JLabel label = new JLabel(f.format(i*0.1));
label.setFont(label.getFont().deriveFont(Font.PLAIN));
labels.put(i,label);
}
slider.setLabelTable(labels);
监听器的代码如下
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
if(!slider.getValueIsAdjusting())
{
double value = slider.getValue();
System.out.println("value"+value);
}
}
});
提前致谢。
此致, 科林
您的代码按原样完美运行。 我做的唯一改变是除以 10.0,所以我们得到一个双倍数:
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
if (!slider.getValueIsAdjusting()) {
double v = slider.getValue() / 10.0;
System.out.println("value: "+v);
}
}
});