当前位置: 首页 > 知识库问答 >
问题:

在Thumb上方显示修改的JSlider值

劳灵均
2023-03-14

在使用特定的“look and feel”时,是否有一种简单的方法来更改JSlider上方标签中显示的值?

明确一点,我说的是这个值:

具体地说,我想展示的是除以1000的值,而不是值本身。

考虑到JSlider不支持Double,这似乎是一个明显的问题。

共有1个答案

叶谦
2023-03-14

具体地说,我想展示的是除以1000的值,而不是值本身。

这可能起作用:label.settext(string.format(“%.3f”,Slider.getValue()/1000f));

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public final class SliderTooltipTest {
  private JComponent makeUI() {
    JSlider slider = new JSlider(1, 100000) {
      private SliderPopupListener popupHandler;
      @Override public void updateUI() {
        removeMouseMotionListener(popupHandler);
        removeMouseListener(popupHandler);
        removeMouseWheelListener(popupHandler);
        super.updateUI();
        popupHandler = new SliderPopupListener();
        addMouseMotionListener(popupHandler);
        addMouseListener(popupHandler);
        addMouseWheelListener(popupHandler);
      }
    };
    slider.setMajorTickSpacing(10000);
    slider.setPaintTicks(true);

    JPanel p = new JPanel();
    p.setBorder(BorderFactory.createEmptyBorder(50, 10, 50, 10));
    p.add(new JLabel("1"));
    p.add(slider);
    p.add(new JLabel("100Gb/s"));
    return p;
  }
  public static void main(String... args) {
    EventQueue.invokeLater(new Runnable() {
      @Override public void run() {
        createAndShowGUI();
      }
    });
  }
  public static void createAndShowGUI() {
    try {
      for (UIManager.LookAndFeelInfo laf: UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(laf.getName())) {
          UIManager.setLookAndFeel(laf.getClassName());
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.getContentPane().add(new SliderTooltipTest().makeUI());
    f.setSize(320, 240);
    f.setLocationRelativeTo(null);
    f.setVisible(true);
  }
}

class SliderPopupListener extends MouseAdapter {
  private final JWindow toolTip = new JWindow();
  private final JLabel label = new JLabel("", SwingConstants.CENTER);
  private final Dimension size = new Dimension(60, 20);
  private int prevValue = -1;

  public SliderPopupListener() {
    super();
    label.setOpaque(false);
    label.setBackground(UIManager.getColor("ToolTip.background"));
    //label.setBorder(UIManager.getBorder("ToolTip.border"));
    label.setBorder(BorderFactory.createLineBorder(Color.CYAN.darker()));
    toolTip.add(label);
    toolTip.setSize(size);
  }
  protected void updateToolTip(MouseEvent me) {
    JSlider slider = (JSlider) me.getComponent();
    int intValue = (int) slider.getValue();
    if (prevValue != intValue) {
      label.setText(String.format("%.3f", slider.getValue() / 1000f));
      Point pt = me.getPoint();
      pt.y = -size.height;
      SwingUtilities.convertPointToScreen(pt, me.getComponent());
      pt.translate(-size.width / 2, 0);
      toolTip.setLocation(pt);
    }
    prevValue = intValue;
  }
  @Override public void mouseDragged(MouseEvent me) {
    toolTip.setVisible(true);
    updateToolTip(me);
  }
  @Override public void mouseReleased(MouseEvent me) {
    toolTip.setVisible(false);
  }
}
 类似资料:
  • 控制器代码 我想在表格视图中显示之前对数据做一些操作 像秋千 在摇摆,我喜欢这个,它工作得很好。 但不知道如何在tableview javafx上进行操作。

  • 相信如果大家看了《电脑报》第15期《如何修改BIOS里“能源之星”LOGO》后,对修改BIOS的升级文件已经有点经验了吧!顺着这个方向,这次我们来看看如何再进一步修改里面的提示信息吧! 有了上次的经验,相信大家对CBROM这个软件也略知一二了,不知道大家留意到它的那个MIB参数没有,经过我的研究,其实这个MIB就是英文MenuIn Bios的缩写。看单词大家应该明白是什么意思了吧,没错,就是在BI

  • 我正在制作一个mod,我得到了这个错误: 使用缺少的纹理,无法加载空:纹理/项目/训练紧身靴。png java。伊奥。FileNotFoundException:null:纹理/项目/训练紧身靴。巴布亚新几内亚 我有纹理名称设置为完全以上和文件夹项目。 这是我的代码: 我换了这部分

  • 本文向大家介绍layui table数据修改的回显方法,包括了layui table数据修改的回显方法的使用技巧和注意事项,需要的朋友参考一下 实现的样式给你们看一波 点击这锅按钮 其实回显就是一个赋值的操作,先把form表单的那些input 框的id拿到,在展示成功的那里进行绑值 好啦,分享结束! 以上这篇layui table数据修改的回显方法就是小编分享给大家的全部内容了,希望能给大家一个参

  • 我试图在qtip中的图像上显示jQuery UI工具提示。现在,工具提示显示在工具提示后面。你知道怎么把它展示在它面前吗? 小提琴在这里:http://jsfiddle.net/wYM2Q/ 将鼠标移到文本“bind qtip to this”上。然后将鼠标悬停在qtip内的图像上。你会看到qtip后面显示的工具提示,我想在它前面显示。

  • 我有一组数据,我正在分散地绘制。当我将鼠标滑过其中一个圆圈时,我希望它弹出数据(比如x、y值,可能更多)。以下是我尝试使用的: 我想我需要更多关于输入什么数据的信息?