Как изменить цвет фона JLabel с помощью JSlider
JSlider с интерфейсом "ChangeListener"и дескриптором" ChangeEvent", который изменит цвет фона 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();
}
});
}
}
2 ответа:
JLabel
прозрачен, то придется менять его непрозрачностьJLabel.setOpaque(true)
Прочитайте учебник Oracle Как использовать слайдеры
JLabel прозрачен, не может напрямую изменить цвет фона.
Вы можете расширить от JLabel и переопределить метод paint
Или измените bgcolor панели. Вы ставите JLabel на панель, и когда ползунок перемещается, просто измените цвет BG этой панели. С надписи прозрачный, вы увидите изменения.
Что касается кода, попробуйте добавить что-то подобное в свой метод statechange
panel.setBackground(new Color(int,int,int));//ints could be slider.getValue();