这工作正常。这是源链接
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.plaf.basic.BasicSliderUI;
class JSliderEX extends JFrame
{
JSlider slider = new JSlider(0,100,0);
public JSliderEX()
{
super("JSliderEX");
setSize(300,80);
setLocation(400,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MySliderUI ms = new MySliderUI(slider,this);
slider.setUI(ms);
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(5);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
getContentPane().add(slider);
}
public static void main(String args[]){new JSliderEX().setVisible(true);}
}
class MySliderUI extends BasicSliderUI implements MouseMotionListener, MouseListener
{
JPopupMenu pop = new JPopupMenu();
JFrame parent;
JLabel lblPop = new JLabel("",SwingConstants.CENTER);
public MySliderUI(JSlider slider,JFrame p)
{
super(slider);
slider.addMouseMotionListener(this);
slider.addMouseListener(this);
parent = p;
JPanel jp = new JPanel();
lblPop.setPreferredSize(new Dimension(30,12));
jp.add(lblPop);
pop.add(jp);
}
public void setPop(MouseEvent me)
{
lblPop.setText(""+slider.getValue());
pop.setLocation((int)(parent.getX()+slider.getX()+me.getX()-10),
(int)(parent.getY()+slider.getY()));
}
public void mouseDragged(MouseEvent me){setPop(me);}
public void mouseMoved(MouseEvent me){}
public void mousePressed(MouseEvent me){pop.setVisible(true);setPop(me);}
public void mouseClicked(MouseEvent me){}
public void mouseReleased(MouseEvent me){pop.setVisible(false);}
public void mouseEntered(MouseEvent me){}
public void mouseExited(MouseEvent me){}
}