简体   繁体   English

如何使用JSlider更改JLabel背景颜色

[英]How to change JLabel background color using JSlider

JSlider with "ChangeListener" interface and handle"ChangeEvent" that will change JLabel background color when slider value is change.please help me i couldn't do it. JSlider带有“ChangeListener”接口并处理“ChangeEvent”,当滑块值改变时,它将改变JLabel背景颜色。请帮助我,我无法做到这一点。 thanks in advance.i couldn't apply JLabel 提前谢谢。我不能申请JLabel

              package org.kodejava.example.swing;
              import javax.swing.*;
               import javax.swing.event.ChangeEvent;
               import javax.swing.event.ChangeListener;
              import java.awt.*;
           public class JSliderDemo extends JPanel implements ChangeListener {
private JTextField field;

public JSliderDemo() {
    initializeUI();
}

private void initializeUI() {
    setLayout(new BorderLayout());
    setPreferredSize(new Dimension(400, 100));

    //
    // Creates an instance of JSlider with a horizontal
    // orientation. Define 0 as the minimal value and
    // 50 as the maximum value. The initial value is set
    // to 10.
    //
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 10);

    slider.setPaintTicks(true);
    slider.setPaintLabels(true);
    slider.setMinorTickSpacing(1);
    slider.setMajorTickSpacing(10);

    slider.addChangeListener(this);

    JLabel label = new JLabel("The Value:");
    field = new JTextField(5);

    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout());
    panel.add(label);
    panel.add(field);

    add(slider, BorderLayout.NORTH);
    add(panel, BorderLayout.SOUTH);
}

public void stateChanged(ChangeEvent e) {
    JSlider slider = (JSlider) e.getSource();

    //
    // Get the selection value of JSlider
    //
    field.setText(String.valueOf(slider.getValue()));
}

public static void showFrame() {
    JPanel panel = new JSliderDemo();
    panel.setOpaque(true);

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Slider Example");
    frame.setContentPane(panel);
    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            JSliderDemo.showFrame();
        }
    });
}
}
  1. JLabel is transparent, then have to change its opacity JLabel.setOpaque(true) JLabel是透明的,然后必须改变它的不透明度JLabel.setOpaque(true)

  2. read Oracle tutorial How to Use Sliders 阅读Oracle教程如何使用滑块

JLabel is transparent, cannot change it's background color directly. JLabel是透明的,不能直接改变它的背景颜色。

you may extend from JLabel and override the paint method 您可以从JLabel扩展并覆盖paint方法

or change the bgcolor of panel. 或更改面板的bgcolor。 You're putting JLabel on panel and when the slider moves, just change the bgcolor of that panel. 您将JLabel放在面板上,当滑块移动时,只需更改该面板的bgcolor即可。 Since JLabel is transparent, you will see the change. 由于JLabel是透明的,您将看到更改。

As for code try adding something like this inside your statechange method 至于代码,尝试在statechange方法中添加这样的东西

panel.setBackground(new Color(int,int,int));//ints could be slider.getValue();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM