JavaJSlider.getvalue将正确的值返回给JTextField,将错误的值返回给toolTipText

JavaJSlider.getvalue将正确的值返回给JTextField,将错误的值返回给toolTipText,java,swing,jtextfield,jslider,Java,Swing,Jtextfield,Jslider,我使用NetBeans 7.2 在我的JPanel1中有一个JSlider滑块\u random,输入值100,最小值0,最大值1000。我通过属性(自定义代码)为slider\u random设置toolTipText: 我的问题是当我启动程序并指向它显示的滑块时: 范围(0-1000) 目前:50 然后稍微移动滑块,并移回原始位置(同时我可以看到text\u current中的更改)所有数据都变为正确,工具提示显示: 范围(0-1000) 电流:100 什么会导致我的问题 我可以重新编写您的

我使用NetBeans 7.2

在我的
JPanel1
中有一个
JSlider滑块\u random
,输入值
100
,最小值
0
,最大值
1000
。我通过属性(自定义代码)为
slider\u random
设置
toolTipText

我的问题是当我启动程序并指向它显示的滑块时:

范围(0-1000)

目前:50

然后稍微移动滑块,并移回原始位置(同时我可以看到
text\u current
中的更改)所有数据都变为正确,工具提示显示:

范围(0-1000)

电流:100

什么会导致我的问题


我可以重新编写您的问题

问题是jSlider的默认值是50。您将该值修改为100,但这并没有反映在jSlider的setToolTip()方法中,您可以通过自定义代码访问jSlider的值。它将显示旧值50

要纠正这一点,一种解决方案是在滑块上创建鼠标悬停事件,这样当您运行应用程序并将鼠标指针悬停在滑块上时,jToolTip方法会拾取最新的值并显示相同的值。它对我有用,所以我相信它对你也有用


如果我能想出一个更好的解决方案,我会发布同样的

我可以重新编写您的问题

问题是jSlider的默认值是50。您将该值修改为100,但这并没有反映在jSlider的setToolTip()方法中,您可以通过自定义代码访问jSlider的值。它将显示旧值50

要纠正这一点,一种解决方案是在滑块上创建鼠标悬停事件,这样当您运行应用程序并将鼠标指针悬停在滑块上时,jToolTip方法会拾取最新的值并显示相同的值。它对我有用,所以我相信它对你也有用


如果我能想出一个更好的解决方案,我会发布同样的

可能在滑块的值已经设置好之后添加侦听器。您可能需要更改订单。或者,为了解决初始化问题,可能需要在初始化滑块后显式设置工具提示

作为替代方案,您可以将
JSlider
子类化并覆盖
getToolTipText
,例如:

JSlider slider = new JSlider() {
    public String getToolTipText(MouseEvent e) {
        return "<html>Range (0-" + String.valueOf(getMaximum()) + ")<br>Current: " + String.valueOf(getValue());
    }
};
JSlider slider=new JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+String.valueOf(getmax())+”
当前:“+String.valueOf(getValue())”; } };
下面是一个简短的演示:

import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JSlider;

public class TestSlider {
    public static void main(String[] args) {
        JFrame frame = new JFrame("TestSlider");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JSlider slider = new JSlider() {
            public String getToolTipText(MouseEvent e) {
                return "<html>Range (0-" + String.valueOf(getMaximum())
                        + ")<br>Current: " + String.valueOf(getValue());
            }
        };
        slider.setToolTipText("");

        frame.add(slider);

        ((JComponent) frame.getContentPane()).setBorder(BorderFactory
                .createEmptyBorder(10, 10, 10, 10));
        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);
    }
}
import java.awt.event.MouseEvent;
导入javax.swing.BorderFactory;
导入javax.swing.JComponent;
导入javax.swing.JFrame;
导入javax.swing.JSlider;
公共类测试滑块{
公共静态void main(字符串[]args){
JFrame=新JFrame(“测试滑块”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JSlider slider=新的JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+字符串.valueOf(getMaximum())
+“”
当前:“+String.valueOf(getValue()); } }; slider.setToolTiptText(“”); frame.add(滑块); ((JComponent)frame.getContentPane()).setOrder(BorderFactory) .createEmptyByOrder(10,10,10,10)); frame.setLocationByPlatform(真); frame.pack(); frame.setVisible(true); } }
可能在滑块的值已设置之后添加侦听器。您可能需要更改订单。或者,为了解决初始化问题,可能需要在初始化滑块后显式设置工具提示

作为替代方案,您可以将
JSlider
子类化并覆盖
getToolTipText
,例如:

JSlider slider = new JSlider() {
    public String getToolTipText(MouseEvent e) {
        return "<html>Range (0-" + String.valueOf(getMaximum()) + ")<br>Current: " + String.valueOf(getValue());
    }
};
JSlider slider=new JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+String.valueOf(getmax())+”
当前:“+String.valueOf(getValue())”; } };
下面是一个简短的演示:

import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JSlider;

public class TestSlider {
    public static void main(String[] args) {
        JFrame frame = new JFrame("TestSlider");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JSlider slider = new JSlider() {
            public String getToolTipText(MouseEvent e) {
                return "<html>Range (0-" + String.valueOf(getMaximum())
                        + ")<br>Current: " + String.valueOf(getValue());
            }
        };
        slider.setToolTipText("");

        frame.add(slider);

        ((JComponent) frame.getContentPane()).setBorder(BorderFactory
                .createEmptyBorder(10, 10, 10, 10));
        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);
    }
}
import java.awt.event.MouseEvent;
导入javax.swing.BorderFactory;
导入javax.swing.JComponent;
导入javax.swing.JFrame;
导入javax.swing.JSlider;
公共类测试滑块{
公共静态void main(字符串[]args){
JFrame=新JFrame(“测试滑块”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JSlider slider=新的JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+字符串.valueOf(getMaximum())
+“”
当前:“+String.valueOf(getValue()); } }; slider.setToolTiptText(“”); frame.add(滑块); ((JComponent)frame.getContentPane()).setOrder(BorderFactory) .createEmptyByOrder(10,10,10,10)); frame.setLocationByPlatform(真); frame.pack(); frame.setVisible(true); } }
我认为执行此操作的最佳方法是在滑块附近放置一个标签,然后将一个变量(如整数)替换为“y”,或将get值替换为“y”,这需要的事件是项目状态更改,因此当您移动滑块时,标签将随滑块一起移动,并将显示值;)


}

我认为执行此操作的最佳方法是在滑块附近放置一个标签,然后将一个变量(如整数)替换为“y”,或将get值替换为“y”,这需要的事件是项目状态更改,因此当您移动滑块时,标签将随滑块一起移动,并将显示值;)


}

控制台中是否存在任何异常?你能发布密码吗?@Attila我能重新编写你的问题。将查看是否找到解决方案。@Dan未显示任何异常,当然在生成过程中有0个警告和0个错误。控制台中有任何异常吗?你能发布密码吗?@Attila我能重新编写你的问题。我来看看我能不能
public class Slidebar extends JFrame {

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Slidebar frame = new Slidebar();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Slidebar() {
    setResizable(false);
    setTitle("SlideBar With Text Move");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 317, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    final JSlider slider = new JSlider();

    slider.setPaintLabels(true);
    slider.setOrientation(SwingConstants.VERTICAL);
    slider.setValue(0);
    slider.setBounds(131, 60, 53, 136);
    contentPane.add(slider);

     final JLabel lblNewLabel = new JLabel("");
    int y = 165;
    lblNewLabel.setBounds(111, 173, 41, 30);
    contentPane.add(lblNewLabel);
    slider.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent arg0) {
            int y=165;

            lblNewLabel.setBounds(111, y-(slider.getValue())-5, 41, 30);


            lblNewLabel.setText(slider.getValue()+"");

        }
    });






}