package com.simple.gui;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SliderExample extends JFrame {
private JLabel colorLabel;
private JSlider[] sliders = new JSlider[3];
public SliderExample() {
super("JSlider 사용 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane(); // 프레임의 안쪽 영역
contentPane.setLayout(new FlowLayout());
colorLabel = new JLabel(" Color Label ");
for(int i=0; i<sliders.length; i++) {
sliders[i] = new JSlider(JSlider.HORIZONTAL, 0, 255, 128); // 수평, 최소, 최대, 초기값
sliders[i].setPaintLabels(true);
sliders[i].setPaintTicks(true);
sliders[i].setPaintTrack(true);
sliders[i].setMajorTickSpacing(50); // 주눈금
sliders[i].setMinorTickSpacing(10); // 보조눈금
sliders[i].addChangeListener(new ColorChangeListener());
contentPane.add(sliders[i]);
}
sliders[0].setForeground(Color.RED);
sliders[1].setForeground(Color.GREEN);
sliders[2].setForeground(Color.BLUE);
// 값 받아옴
int red = sliders[0].getValue();
int green = sliders[1].getValue();
int blue = sliders[2].getValue();
// 색을 냄
colorLabel.setOpaque(true);
colorLabel.setBackground(new Color(red, green, blue));
contentPane.add(colorLabel);
setSize(300, 300);
setVisible(true);
}
// ColorChangeListener: 내부클래스, ChangeListener: 인터페이스
class ColorChangeListener implements ChangeListener {
public void stateChanged(ChangeEvent e) {
int r = sliders[0].getValue();
int g = sliders[1].getValue();
int b = sliders[2].getValue();
colorLabel.setBackground(new Color(r, g, b));
}
}
public static void main(String[] args) {
new SliderExample();
}
}