본문 바로가기

프로그램언어/자바

스윙 컴포넌트의 공통 메소드5

JSlider 슬라이더 컴포넌트

 

JSlider 컴포넌트의 생성

JSlider( ) 디폴트 슬라이더 생성
JSlider(int orientation) orientation 방향의 슬라이더 생성
JSlider(int min, int max, int val) 최소, 최대 초깃값을 가진 슬라이더 생성
JSlider(int orientation, int min, int max, int val) 방향, 최소, 최대, 초깃값을 가진 슬라이더 생성

orientation은 JSlider.HORIZONTA과 JSlider.VERTICAL 중 하나이며 각각 수평 슬라이더와 수직 슬라이더를 의미 한다.

 

슬라이더의 모양 제어

void setOrientation(int orientation) orientation의 값에 따라 슬라이더 방향을 수직, 수평모양으로 변경
void setMinimum(int min) 슬라이더 minimum 값을 min 값으로 설정
void setMaximum(int max) 슬라이더 maximum 값을 max 값으로 설정
void setPaintLabels(boolean b) b가 true이면 슬라이더의 label을 보이게 하고 b가 false이면 감춘다.
void setPaintTicks(boolean b) b가 true이면 슬라이더의 눈금을 보이게 하고 b가 false이면 감춘다.
void setPaintTrack(boolean b) b가 true이면 슬라이더의 트랙을 보이게 하고 b가 false이면 감춘다.
void setMinorTickSpacing(int space) 슬라이더의 작은 눈금 간격을 space로 설정한다.
void setMajorTickSpacing(int space) 슬라이더의 큰 눈금 간격을 space로 설정한다.

 

JSlider로 슬라이더 컴포넌트를 만들고 모양을 제어하는 예

import javax.swing.*;

import java.awt.*;

 

public class SliderEx extends JFrame {

    public SliderEx() {

        setTitle("슬라이더 만들기 예제");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();

        c.setLayout(new FlowLayout());

 

        JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 200, 100);

        slider.setPaintLabels(true);

        slider.setPaintTicks(true);

        slider.setPaintTrack(true);

        slider.setMajorTickSpacing(50);

        slider.setMinorTickSpacing(10);

        c.add(slider);

 

        setSize(300,100);

        setVisible(true);

   }

 

    public static void main(String [] args) {

        new SliderEx();

    }

}

 

 

JSlider와 Change 이벤트

Change 이벤트 정보를 가진 이벤트 객체는 ChangeEvent이며, javax.swing, event 패키지에 포함되어 있다.

 

JSlider와 Change 이벤트를 활용한 색깔 다루기예

 

import javax.swing.*;

import java.awt.*;

import javax.swing.event.*;

 

public class SliderChangeEx extends JFrame {

    private JLabel colorLabel;

    private JSlider [] sl = new JSlider [3]; // 3개의 슬라이더 배열 생성

 

    public SliderChangeEx() {

        setTitle("슬라이더와 ChangeEvent 예제");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();

        c.setLayout(new FlowLayout());

 

        colorLabel = new JLabel("       RGB Color Change        ");

 

        // 슬라이더를 3개 생성하고 모양을 제어한다.

        for(int i=0; i<sl.length; i++) {

             // 0~255 사이의 값을 선택할 수 있는 슬라이더 생성. 초깃값은 128

            sl[i] = new JSlider(JSlider.HORIZONTAL, 0, 255, 128);

            sl[i].setPaintLabels(true);

            sl[i].setPaintTicks(true);

            sl[i].setPaintTrack(true);

            sl[i].setMajorTickSpacing(50);

            sl[i].setMinorTickSpacing(10);

 

            // 슬라이더에 Change 리스너 등록

            sl[i].addChangeListener(new MyChangeListener());

            c.add(sl[i]); // 슬라이더를 컨텐트팬에 삽입

        }

 

        sl[0].setForeground(Color.RED); // s[0] 슬라이더는 RED 값 선택

        sl[1].setForeground(Color.GREEN); // s[1] 슬라이더는 GREEN 값 선택

        sl[2].setForeground(Color.BLUE); // s[0] 슬라이더는 BLUE 값 선택

 

        // 현재 3개의 슬라이더로부터 값을 얻어 초기 colorLabel의 배경색 설정

        int r = sl[0].getValue(); // 첫 번째 슬라이더로부터 R 성분 값 얻기

        int g = sl[1].getValue(); // 두 번째 슬라이더로부터 G 성분 값 얻기

        int b = sl[2].getValue(); // 세 번째 슬라이더로부터 B 성분 값 얻기

        colorLabel.setOpaque(true); // 배경색이 출력되도록 불투명성 설정

        colorLabel.setBackground(new Color(r,g,b)); // r,g,b 값으로 새로운 색 설정

 

        c.add(colorLabel);

        setSize(300,230);

        setVisible(true);

    }

 

    // Change 리스너 구현

    class MyChangeListener implements ChangeListener {

        public void stateChanged(ChangeEvent e) { // 슬라이더의 값이 변경할 때 호출

            // 3개의 슬라이더로부터 값을 얻어 colorLabel의 배경색 변경

            int r = sl[0].getValue(); // R 성분 값 얻기

            int g = sl[1].getValue(); // G 성분 값 얻기

            int b = sl[2].getValue(); // B 성분 값 얻기

            colorLabel.setBackground(new Color(r,g,b)); // r,g,b 값으로 새로운 색 설정

        }

    }
 

    public static void main(String [] args) {

        new SliderChangeEx();

    }

}