728x90

각종 코딩 테스트와 중요한 면접이 끝나 오랜만에 포스팅.

요즘 자바를 재밌게 배우면서 가벼운 예제를 풀어 보았다.

 

문제 : R,G,B 컬러로 나눈 JSlider를 움직여 textArea의 배경 색을 바꾸어라.

 

편리하게 Listener를 생성자와 구분해 놓았다.

만드는 김에 기본 기능 외에 초기화 버튼이랑 Hex Color(#FF3445 같은 형식)를 보여주는 코드도 넣어 봤다.

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextArea;
import javax.swing.JProgressBar;
import javax.swing.JSlider;
import java.awt.Color;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.CaretListener;
import javax.swing.event.CaretEvent;
import javax.swing.JTextPane;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class RGBQuiz extends JFrame {

    private JPanel contentPane;
    private Color color;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    RGBQuiz frame = new RGBQuiz();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public RGBQuiz() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 769, 292);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JTextArea cta = new JTextArea();
        cta.setBounds(12, 29, 288, 155);
        contentPane.add(cta);

        JSlider Rslider = new JSlider();
        Rslider.setPaintTicks(true);
        Rslider.setForeground(Color.RED);
        Rslider.setBackground(Color.RED);
        Rslider.setValue(0);
        Rslider.setMaximum(255);
        Rslider.setBounds(325, 45, 416, 26);
        contentPane.add(Rslider);

        JSlider Gslider = new JSlider();
        Gslider.setPaintTicks(true);
        Gslider.setBackground(Color.GREEN);
        Gslider.setMaximum(255);
        Gslider.setValue(0);
        Gslider.setBounds(325, 94, 416, 26);
        contentPane.add(Gslider);

        JSlider Bslider = new JSlider();
        Bslider.setPaintTicks(true);

        Bslider.setBackground(Color.BLUE);
        Bslider.setForeground(Color.BLUE);
        Bslider.setMaximum(255);
        Bslider.setValue(0);
        Bslider.setBounds(325, 147, 416, 26);
        contentPane.add(Bslider);

        JButton btnInit = new JButton("\uCD08\uAE30\uD654");
        btnInit.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                Rslider.setValue(0);
                Gslider.setValue(0);
                Bslider.setValue(0);
            }
        });
        btnInit.setBounds(325, 196, 97, 23);
        contentPane.add(btnInit);

        JTextArea textArea = new JTextArea();
        textArea.setBounds(12, 196, 288, 23);
        contentPane.add(textArea);

        Rslider.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                cta.setBackground(new Color(Rslider.getValue(),Gslider.getValue(),Bslider.getValue()));
                String hex = String.format("#%02x%02x%02x", Rslider.getValue(), Gslider.getValue(), Bslider.getValue());
                textArea.setText("현재 색 : R - "+ Rslider.getValue()+" G - "+Gslider.getValue()+" B - "+Bslider.getValue() + " HexColor : "+hex);

            }
        });

        Gslider.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                cta.setBackground(new Color(Rslider.getValue(),Gslider.getValue(),Bslider.getValue()));
                String hex = String.format("#%02x%02x%02x", Rslider.getValue(), Gslider.getValue(), Bslider.getValue());
                textArea.setText("현재 색 : R - "+ Rslider.getValue()+" G - "+Gslider.getValue()+" B - "+Bslider.getValue() + " HexColor : "+hex);
            }
        });

        Bslider.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                cta.setBackground(new Color(Rslider.getValue(),Gslider.getValue(),Bslider.getValue()));
                String hex = String.format("#%02x%02x%02x", Rslider.getValue(), Gslider.getValue(), Bslider.getValue());
                textArea.setText("현재 색 : R - "+ Rslider.getValue()+" G - "+Gslider.getValue()+" B - "+Bslider.getValue() + " HexColor : "+hex);
            }
        });
    }
}

결과

RGB Calculator

 

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기