Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSlider实时更新JLabel_Java_Jlabel_Jslider_Changelistener - Fatal编程技术网

Java 使用JSlider实时更新JLabel

Java 使用JSlider实时更新JLabel,java,jlabel,jslider,changelistener,Java,Jlabel,Jslider,Changelistener,我试图让JSlider实时更新JLabel,但它只是出现了错误。以下是我目前的代码: slider.addChangeListener(new ChangeListener() { public void stateChanged() { label.setText(String.valueOf(slider.getValue())); } }); 有人能看出我哪里出了错吗? 谢谢,我错了,代码中有一个非常基本的错误:stateChanged方法错误,因为它需要一个

我试图让JSlider实时更新JLabel,但它只是出现了错误。以下是我目前的代码:

slider.addChangeListener(new ChangeListener() {
   public void stateChanged() {
       label.setText(String.valueOf(slider.getValue()));
   }
 });
有人能看出我哪里出了错吗?
谢谢,

我错了,代码中有一个非常基本的错误:stateChanged方法错误,因为它需要一个ChangeEvent参数。改变

public void stateChanged() {

编译器错误消息应该告诉您所有这些,并且在将来,您将希望批判性地阅读这些消息,因为如果您这样做,它们将为您省去很多痛苦

例如:

import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderFoo extends JPanel {
    private JSlider slider = new JSlider(0, 100, 50);
    private JLabel label = new JLabel("   ", SwingConstants.CENTER);

    public SliderFoo() {
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                label.setText(String.valueOf(slider.getValue()));
            }
        });

        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);

        JPanel topPanel = new JPanel();
        topPanel.add(new JLabel("Slider Value:"));
        topPanel.add(label);

        setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        setLayout(new BorderLayout(5, 5));
        add(topPanel, BorderLayout.PAGE_START);
        add(slider);
    }

    private static void createAndShowGui() {
        SliderFoo mainPanel = new SliderFoo();

        JFrame frame = new JFrame("SliderFoo");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            createAndShowGui();
        });
    }
}

“有人知道我哪里出错了吗?”
——您发布的代码似乎没有问题,表明错误在别处。如果您仍然需要帮助,请通过创建并发布一个链接来改进问题。我们不想看到您的整个程序,但您应该将代码压缩为最小的代码位,它仍然可以编译,没有与您的问题无关的额外代码,但仍然可以演示您的问题。您可以通过简单地隔离和暴露bug来很好地解决问题。此外,发布您可能遇到的任何和所有错误消息。
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderFoo extends JPanel {
    private JSlider slider = new JSlider(0, 100, 50);
    private JLabel label = new JLabel("   ", SwingConstants.CENTER);

    public SliderFoo() {
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                label.setText(String.valueOf(slider.getValue()));
            }
        });

        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);

        JPanel topPanel = new JPanel();
        topPanel.add(new JLabel("Slider Value:"));
        topPanel.add(label);

        setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        setLayout(new BorderLayout(5, 5));
        add(topPanel, BorderLayout.PAGE_START);
        add(slider);
    }

    private static void createAndShowGui() {
        SliderFoo mainPanel = new SliderFoo();

        JFrame frame = new JFrame("SliderFoo");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            createAndShowGui();
        });
    }
}