java - 具有接近双值的 JSlider

标签 java swing jfreechart jslider

我有一个 JSlider,我希望它与我的 JFreeChart 点相匹配,但问题是我的绘图的 x 值具有 8.993 和 8.997 等值,因此舍入会导致问题。有没有办法让我的 slider 与 double 匹配(我知道这是一个常见问题,但我找不到实际的解决方案),或者有人可以给我一个关于如何使正常的 JSlider 工作的建议我的数据?

提前谢谢

最佳答案

这是可以做到的,但是需要您设置 JSlider 的标签表以将 int 转换为 double(实际上是格式化的 double 字符串),并且您还需要将 slider 的值也转换为 double 值。例如:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Dictionary;
import java.util.Hashtable;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderEg {
   public static void main(String[] args) {
      int start = 8990;
      int end = 9000;
      int value = 8995;

      final JSlider slider = new JSlider(start, end, value);
      slider.setPaintLabels(true);
      slider.setPaintTicks(true);
      slider.setMajorTickSpacing(2);
      slider.setMinorTickSpacing(1);
      Dictionary<Integer, JLabel> labels = new Hashtable<>();
      for (int i = start; i <= end; i += 2) {
         String text = String.format("%4.3f", i / 1000.0);
         labels.put(i, new JLabel(text));
      }

      slider.setLabelTable(labels);
      JPanel panel = new JPanel(new BorderLayout());
      panel.setPreferredSize(new Dimension(400, 50));
      panel.add(slider, BorderLayout.PAGE_START);

      slider.addChangeListener(new ChangeListener() {

         @Override
         public void stateChanged(ChangeEvent e) {
            int value = slider.getValue();
            double sliderValue = value / 1000.0;
            System.out.printf("Slider Value: %4.3f%n", sliderValue);
         }
      });
      JOptionPane.showMessageDialog(null, panel);
   }
}

关于java - 具有接近双值的 JSlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718736/

相关文章:

java - 将 JChart 添加到面板

javax.tools编译器生成jar

java - BufferedReader.read() 中断在 servlet 中获取 POST 数据

java - Intellij IDEA - 来自 WSDL 的带有证书的 Web 服务客户端

java - JButton Action 监听器不起作用

java - 绘制带有时间延迟的图像

java - 使用 JFreeChart 的 XYLineAndShapeRenderer 绘制自定义线条

java - 使用 KeyBIndings 响应按钮

java - JTable数据仅在滚动后显示

java - 在 JFreeChart 堆叠 3D 条形图中更改自定义颜色