首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有从JSlider获取价值

没有从JSlider获取价值
EN

Stack Overflow用户
提问于 2012-06-22 17:31:00
回答 2查看 5.1K关注 0票数 1

我在我的程序中使用了一个JSlider,并且已经实现了一个ChangeListener。

代码语言:javascript
复制
public void stateChanged(ChangeEvent e)
    {
        JSlider source=(JSlider) e.getSource();
        frame_value.setText(Integer.toString(source.getValue()));

        //Condition to change the frame_no only when user has stopped moving the slider
        if (!source.getValueIsAdjusting()) 
        {
            frame_no=(int) source.getValue()-1;
            if(frame_no<0)
                frame_no=0;
        }
        ....
}

发生的情况是,每当调用ChangeListener时,程序都会跳过if块,转到后面的代码。我不明白为什么会发生这种事。我无法从JSlider获取正确的值。请帮帮我!!

PS:我不知道这是不是原因,但最近我设置了JSlider的用户界面,将勾号放在我点击的地方。我不知道这是不是造成的。代码如下:

代码语言:javascript
复制
slider.setUI(new MetalSliderUI() {
                protected void scrollDueToClickInTrack(int direction) {
                    int value = HEVC_Analyzer.slider.getValue(); 

                   value = this.valueForXPosition(HEVC_Analyzer.slider.getMousePosition().x);
                   HEVC_Analyzer.slider.setValue(value);
                }
            });
EN

回答 2

Stack Overflow用户

发布于 2012-06-22 18:16:11

一定是你的代码出了问题,因为它在这个例子中运行得很好:

代码语言:javascript
复制
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderChangeEffect extends JFrame
{
    private JSlider slider;
    private int count = 0;
    private ChangeListener changeListener = new ChangeListener()
    {
        public void stateChanged(ChangeEvent ce)
        {
            JSlider slider = (JSlider) ce.getSource();
            if (!slider.getValueIsAdjusting())
                System.out.println(slider.getValue());
        }
    };

    private void createAndDisplayGUI()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationByPlatform(true);

        JPanel contentPane = new JPanel();
        contentPane.setOpaque(true);

        slider = new JSlider(0, 10, 5);
        slider.setMajorTickSpacing(2);
        slider.setMinorTickSpacing(1);
        slider.addChangeListener(changeListener);

        contentPane.add(slider);

        getContentPane().add(contentPane);
        pack();
        setVisible(true);
    }

    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new SliderChangeEffect().createAndDisplayGUI();
            }
        });
    }
}
票数 5
EN

Stack Overflow用户

发布于 2015-01-03 13:40:33

只需使用String.valueOf()和event.MouseReleased()即可。

代码语言:javascript
复制
 private void jSlider1MouseReleased(java.awt.event.MouseEvent evt) {                                       
    // TODO add your handling code here:
    try {

        String valueOf = String.valueOf(jSlider1.getValue());
        jLabel1.setText(valueOf);

    } catch (Exception ex) {
        ex.printStackTrace();
    }

}   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11153621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档