首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSlider getValue()条件

JSlider getValue()条件
EN

Stack Overflow用户
提问于 2022-01-15 11:44:13
回答 1查看 154关注 0票数 0

我一直在尝试用JSlider建立一个反馈系统。我希望根据不同的JLabel值将JSlider设置为不同的文本。例如,如果值小于25,我希望JLabel以坏的形式显示文本,如果值在25到50罚款之间,如果值在50到75之间,那么很好,如果值大于75,那么最好。以下是代码:

“”“

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class slider {

JFrame frame;
JPanel panel;
JLabel label;
JLabel rating;
JSlider slider;

slider() {

    frame = new JFrame("Slider Demo");
    panel = new JPanel();
    label = new JLabel();
    slider = new JSlider(JSlider.VERTICAL, 0, 100, 50);
    rating = new JLabel();
    slider.setPreferredSize(new Dimension(400, 200));
    slider.setPaintTicks(true);
    slider.setMinorTickSpacing(10);
    slider.setPaintTrack(true);
    slider.setMajorTickSpacing(25);
    slider.setPaintLabels(true);
    slider.setFont(new Font("MV Boli", Font.PLAIN, 15));
    label.setFont(new Font("MV Boli", Font.PLAIN, 25));
    rating.setFont(new Font("MV Boli", Font.PLAIN, 25));
    label.setText("Please rate us!  ");
    rating.setText("Fine");

    slider.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            int value = slider.getValue();
            if (value < 25)
                rating.setText("Bad!");
            if (value > 25 && value < 50)
                ;
            rating.setText("Fine!");

            if (value > 50 && value < 75)
                ;
            rating.setText("Good!");

            if (value > 75)
                ;
            rating.setText("Best!");
        }
    });
    panel.setLayout(new FlowLayout());
    panel.add(label);
    panel.add(slider);
    panel.add(rating);
    frame.add(panel);
    frame.setSize(420, 420);
    frame.setVisible(true);

}

public static void main(String args[]) {
    new slider();
}

}

‘问题是标签没有像我想要的那样改变文字。它从我设置的值50开始,标签读起来很好,但当我移动滑块时,标签被设置为Best,无论我如何移动滑块,它都不会改变。请帮帮我。我是根据我的知识编写这段代码的。实际上,我不知道是否有其他方法使这个评级系统发挥作用。

EN

回答 1

Stack Overflow用户

发布于 2022-01-15 12:05:17

在每个;语句的末尾都有额外的分号if,而不应该这样。相反,它应该如下所示:

更新:

正如@c0der正确指出的那样,使用else if将更有效,而不是让程序遍历代码中的每个if语句。因此,根据这一点对下文作了修改。

代码语言:javascript
复制
public void stateChanged(ChangeEvent e) {
    int value = slider.getValue();
    System.out.println(value);
    if (value < 25)
        rating.setText("Bad!");
    else if (value > 25 && value < 50)
        rating.setText("Fine!");
    else if (value > 50 && value < 75)
        rating.setText("Good!");
    else if (value > 75)
        rating.setText("Best!");
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70721087

复制
相关文章

相似问题

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