我使用 NetBeans 7.2。
我的JPanel1
中有一个JSlider slider_random
,输入值100
,最小值0
,最大值1000
。我通过属性(自定义代码)为 slider_random
设置了一个 toolTipText
:
"<html>Range (0-" + String.valueOf(slider_random.getMaximum()) + ")<br>Current: " + String.valueOf(slider_random.getValue())
还放置了一个 JTextField text_current
并将文本设置为 100
,这会在我更改它时显示 slider_random
的值。
我将 stateChanged
事件设置为 slider_random
:
private void slider_randomStateChanged(javax.swing.event.ChangeEvent evt) {
slider_random.setToolTipText("<html>Range (0-" + String.valueOf(slider_random.getMaximum()) + ")<br>Current: " + String.valueOf(slider_random.getValue()));
jTextField1.setText(String.valueOf(slider_random.getValue()));
}
我的问题是当我启动程序并指向它显示的 slider 时:
Range (0-1000)
Current: 50
然后稍微移动 slider ,然后移回原来的位置(同时我可以看到 text_current
的变化)所有数据都正确了,工具提示说:
Range (0-1000)
Current: 100
什么会导致我的问题?
最佳答案
我能够重现您的问题。
问题是 jSlider 的默认值为 50。您将该值修改为 100,但这并没有反射(reflect)在 jSlider 的 setToolTip() 方法中,您在该方法中访问 jSlider 的值(通过自定义代码)。它将显示旧值 50。
要纠正这个问题,一种解决方案是在 slider 上创建一个鼠标悬停事件,这样当您运行应用程序并将鼠标指针悬停在 slider 上时,jToolTip 方法会选择最新的值并向您显示相同的值。它对我有用,所以我相信它对你也有用。
如果我能想到更好的解决方案,我会发布相同的解决方案。
关于Java JSlider.getvalue 向 JTextField 返回正确的值,向 toolTipText 返回错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057812/