[英]JSlider getValue() condition
我一直在嘗試用 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();
}
}
''' 問題是 label 沒有按照我的意願更改文本。 It starts with value 50 as I set and the label reads Fine which is actually fine but when I move the slider up or down the label is set to Best and it won't change no matter how I move my slider. 請幫幫我。 我根據我的知識編寫了這段代碼。 我實際上並不知道是否有其他方法可以使這個評級系統發揮作用。
你有多余的分號;
在每個if
語句的末尾,你不應該這樣做。 相反,它應該如下所示:
更新:
正如@c0der 正確指出的那樣,使用else if
會更有效,而不是通過代碼中的每個if
語句將程序轉到 go 。 因此,以下根據此進行修改。
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!");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.