【发布时间】:2022-01-15 11:44:13
【问题描述】:
我一直在尝试使用 JSlider 制作反馈系统。我希望 JLabel 根据不同的 JSlider 值设置为不同的文本。例如,如果值小于 25,我希望 JLabel 将文本显示为差,如果值在 25 和 50 之间,则很好,如果值在 50 和 75 之间,则为好,如果值高于 75,则最好。代码如下:
'''
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 开始,标签显示为 Fine,这实际上很好,但是当我向上或向下移动滑块时,标签设置为 Best,无论我如何移动滑块,它都不会改变。请帮帮我。我根据我的知识编写了这段代码。我实际上不知道是否有其他方法可以使这个评级系统发挥作用。
【问题讨论】:
-
您的代码中有额外的
;。
标签: java swing user-interface jslider