Tooltips usage

K

k0m0r

Hi.
I've been trying to solve it myself, but I simply don't get it :(

I've got a JSlider and I need to print it's value in a tooltip that
appears at the cursor position every time mouse enters the
slider or changes its value (the tooltip should "chase" mouse
position).
I've been trying this:

class JProxySlider extends JSlider
implements ChangeListener {

JToolTip tip = new JToolTip();

JProxySlider() {
.....
tip.setComponent(this);
this.addChangeListener(this);
}

public void stateChanged(ChangeEvent e) {
tip.setToolTipText(this.getValue()+"");
tip.setVisible(true);
}
}

but I can't figure out how to fire the tooltip popup.
I found also ToolTipManager, but I can't force it
to work with this one.

Please help.

k0m0r
 
T

Thomas Fritsch

k0m0r said:
I've been trying to solve it myself, but I simply don't get it :(

I've got a JSlider and I need to print it's value in a tooltip that
appears at the cursor position every time mouse enters the
slider or changes its value (the tooltip should "chase" mouse
position).
I've been trying this:

class JProxySlider extends JSlider
implements ChangeListener {

JToolTip tip = new JToolTip();

JProxySlider() {
.....
tip.setComponent(this);
this.addChangeListener(this);
}

public void stateChanged(ChangeEvent e) {
tip.setToolTipText(this.getValue()+"");
tip.setVisible(true);
}
}

but I can't figure out how to fire the tooltip popup.
I found also ToolTipManager, but I can't force it
to work with this one.

Try this:
class JProxySlider extends JSlider
implements ChangeListener {

JProxySlider() {
setToolTipText(this.getValue()+"");
this.addChangeListener(this);
}

public void stateChanged(ChangeEvent e) {
// update the tooltip to current slider value
setToolTipText(this.getValue()+"");
}

// overridden, so that the tooltip follows the mouse position
public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX() + 15, event.getY());
}
}

BTW, what makes you want to use tooltips to display the current slider
value?
Why not doing it more conventional?, i.e. by using the JSlider-API to
draw ticks/labels permanently. For example:
this.setPaintLabels(true);
this.setMajorTickSpacing(20);
this.setMinorTickSpacing(5);
this.setPaintTicks(true);
 
V

Vova Reznik

k0m0r said:
Hi.
I've been trying to solve it myself, but I simply don't get it :(

I've got a JSlider and I need to print it's value in a tooltip that
appears at the cursor position every time mouse enters the
slider or changes its value (the tooltip should "chase" mouse
position).
I've been trying this:

class JProxySlider extends JSlider
implements ChangeListener {

JToolTip tip = new JToolTip();

JProxySlider() {
.....
tip.setComponent(this);
this.addChangeListener(this);
}

public void stateChanged(ChangeEvent e) {
tip.setToolTipText(this.getValue()+"");
tip.setVisible(true);
}
}

but I can't figure out how to fire the tooltip popup.
I found also ToolTipManager, but I can't force it
to work with this one.

Please help.

k0m0r
All you need is to overright
public String getToolTipText(MouseEvent event) {
return "" + getValue();
}
of JComponent and call setToolTipText in a constructor.


import java.awt.BorderLayout;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JSlider;

class JProxySlider extends JSlider {
JProxySlider() {
super(5, 25);
setToolTipText(this.getValue() + "");
}

public String getToolTipText(MouseEvent event) {
return "" + getValue();
}

public static void main(String agrs[]) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new JProxySlider(), BorderLayout.CENTER);
f.getContentPane().add(new JProxySlider(), BorderLayout.NORTH);
f.getContentPane().add(new JProxySlider(), BorderLayout.SOUTH);
f.setLocationRelativeTo(null);
f.pack();
f.setVisible(true);
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top