JAVA

12일차

구자룡 2021. 4. 8. 18:06

import javax.swing.*;
import java.awt.*;

public class Exam04 extends JFrame {
	public Exam04() {
		setTitle("체크박스 만들기 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c = getContentPane();
		c.setLayout(new FlowLayout());

		// 이미지 체크박스에 사용할 2개의 이미지 객체 생성
		ImageIcon cherryIcon = new ImageIcon("images/cherry.jpg"); // 해제 상태 이미지
		ImageIcon selectedCherryIcon = new ImageIcon(
				"images/selectedCherry.jpg"); // 선택 상태 이미지
		
		// 3개의 체크박스 생성
		JCheckBox apple = new JCheckBox("사과");
		JCheckBox pear = new JCheckBox("배", true);
		JCheckBox cherry = new JCheckBox("체리", cherryIcon); 

		cherry.setBorderPainted(true); // 체크박스 외곽선이 보이도록 설정
		cherry.setSelectedIcon(selectedCherryIcon); // 선택 상태 이미지 등록
		
		// 컨텐트팬에 3개의 체크박스 부착
		c.add(apple);
		c.add(pear);
		c.add(cherry);

		setSize(250,150);
		setVisible(true);
	}
	
	public static void main(String [] args) {
		new Exam04();
	}
}

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Exam05 extends JFrame {
	private JCheckBox [] fruits = new JCheckBox [3]; // 체크박스 배열
	private String [] names = {"사과", "배", "체리"}; // 체크박스 문자열로 사용할 문자열 배열
	private JLabel sumLabel; // 계산 합을 출력할 레이블
	
	public Exam05() {
		setTitle("체크박스와 ItemEvent 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		
		c.add(new JLabel("사과 100원, 배 500원, 체리 20000원"));
		
		// 3개의 체크박스를 생성. 컨텐트팬에 삽입하고 Item 리스너 등록
		MyItemListener listener = new MyItemListener();
		for(int i=0; i<fruits.length; i++) {
			fruits[i] = new JCheckBox(names[i]); // names[]의 문자열로 체크박스 생성
			fruits[i].setBorderPainted(true); // 체크박스 외곽선 보이도록 설정
			c.add(fruits[i]); // 컨텐트팬에 체크박스 삽입
			fruits[i].addItemListener(listener); // 체크박스에 Item 리스너 등록
		}
		
		sumLabel = new JLabel("현재 0 원 입니다."); // 가격 합을 출력하는 레이블 생성
		c.add(sumLabel);
		
		setSize(250,200);
		setVisible(true);
	}
	
	// Item 리스너 구현
	class MyItemListener implements ItemListener {
		private int sum = 0; // 가격의 합

		// 체크박스의 선택 상태가 변하면 itemStateChanged()가 호출됨
		public void itemStateChanged(ItemEvent e) {
			if(e.getStateChange() == ItemEvent.SELECTED) { // 선택 경우
				if(e.getItem() == fruits[0]) // 사과 체크박스 
					sum += 100;
				else if(e.getItem() == fruits[1]) // 배 체크박스
					sum += 500;
				else // 체리 체크박스
					sum += 20000;
			}
			else { // 해제 경우
				if(e.getItem() == fruits[0]) // 사과 체크박스 
					sum -= 100;
				else if(e.getItem() == fruits[1]) // 배 체크박스
					sum -= 500;
				else // 체리 체크박스
					sum -= 20000;
			}
			sumLabel.setText("현재 "+ sum + "원 입니다."); // 합 출력
		}
	}
	public static void main(String [] args) {
		new Exam05();
	}
} 

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Exam07 extends JFrame {
	private JRadioButton [] radio = new JRadioButton [3]; // 라디오버튼 배열
	private String [] text = {"사과", "배", "체리"}; // 라디오버튼의 문자열
	private ImageIcon [] image = { // 이미지 객체 배열
						new ImageIcon("images/apple.jpg"), 
						new ImageIcon("images/pear.jpg"),
						new ImageIcon("images/cherry.jpg")};
	private JLabel imageLabel = new JLabel(); // 이미지가 출력될 레이블
	
	public Exam07() {
		setTitle("라디오버튼 Item Event 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c = getContentPane();
		c.setLayout(new BorderLayout());
		
		JPanel radioPanel = new JPanel(); // 3개의 라디오버튼을 부착할 패널
		radioPanel.setBackground(Color.GRAY);
		
		ButtonGroup g = new ButtonGroup(); // 버튼 그룹 객체 생성
		for(int i=0; i<radio.length; i++) { // 3개의 라디오버튼에 대해
			radio[i] = new JRadioButton(text[i]); // 라디오버튼 생성
			g.add(radio[i]); // 버튼 그룹에 부착
			radioPanel.add(radio[i]); // 패널에 부착
			radio[i].addItemListener(new MyItemListener()); // 라디오버튼에 Item 리스너 등록
		}
		
		radio[2].setSelected(true); // 체리 라디오버튼을 선택 상태로 설정
		c.add(radioPanel, BorderLayout.NORTH); // 컨텐트팬의 NORTH에 라디오패널 부착
		c.add(imageLabel, BorderLayout.CENTER); // 컨텐트팬의 CENTER에 이미지 레이블 부착
		imageLabel.setHorizontalAlignment(SwingConstants.CENTER); // 이미지의 중앙 정렬
		
		setSize(250,200);
		setVisible(true);
	}
	
	// Item 리스너 작성
	class MyItemListener implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			if(e.getStateChange() == ItemEvent.DESELECTED)  
				return; // 해제된 경우 그냥 리턴(잠깐 참고)
			if(radio[0].isSelected()) // 사과가 선택된 경우
				imageLabel.setIcon(image[0]);
			else if(radio[1].isSelected()) // 배가 선택된 경우
				imageLabel.setIcon(image[1]);
			else // 체리가 선택된 경우
				imageLabel.setIcon(image[2]);
		}
	}
	
	public static void main(String [] args) {
		new Exam07();
	}
}

import javax.swing.*;
import java.awt.*;

public class Exam10 extends JFrame {
	private String [] fruits= {"apple", "banana", "kiwi", "mango", "pear", 
							"peach", "berry", "strawberry", "blackberry"};
	private ImageIcon [] images = { new ImageIcon("images/icon1.png"),
									new ImageIcon("images/icon2.png"),
									new ImageIcon("images/icon3.png"),
									new ImageIcon("images/icon4.png") };
	public Exam10() {
		setTitle("리스트 만들기 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c = getContentPane();
		c.setLayout(new FlowLayout());

		JList<String> strList = new JList<String>(fruits); // 문자열 리스트 생성
		c.add(strList);
	
		JList<ImageIcon> imageList = new JList<ImageIcon>(); // 이미지 리스트 생성
		imageList.setListData(images);
		c.add(imageList);
		
		JList<String> scrollList = new JList<String>(fruits); // 문자열 리스트 생성
		c.add(new JScrollPane(scrollList)); // 리스트를 JScrollPane에 부착

		setSize(300,300);
		setVisible(true);
	}
	
	public static void main(String [] args) {
		new Exam10();
	}
}

import javax.swing.*;
import java.awt.*;

public class Exam14 extends JFrame {
	public Exam14() {
		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 Exam14();
	}
}

import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;

public class Exam15 extends JFrame {
	private JLabel colorLabel;
	private JSlider [] sl = new JSlider [3]; // 3개의 슬라이더 배열 생성
	
	public Exam15() {
		setTitle("슬라이더와 ChangeEvent 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c = getContentPane();
		c.setLayout(new FlowLayout());

		colorLabel = new JLabel("       SLIDER EXAMPLE        ");
		
		// 슬라이더를 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 Exam15();
	}
}

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 Exam8 extends JFrame {
private JSlider slider = null;
public Exam8() {
super("JSlider Practice Frame");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
slider = new JSlider(JSlider.HORIZONTAL,100,200,130);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setPaintTrack(true);
slider.setMinorTickSpacing(10);
slider.setMajorTickSpacing(50);
JLabel label = new JLabel("130");
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
int value = slider.getValue();
label.setText(Integer.toString(value));
}
});
label.setBackground(Color.GREEN);
label.setOpaque(true);
c.add(slider);
c.add(label);
setSize(400,200);
setVisible(true);
}
public static void main(String[] args) {
new Exam8();
}
}

'JAVA' 카테고리의 다른 글

14일차  (0) 2021.04.12
13일차  (0) 2021.04.09
11일차  (0) 2021.04.08
10일차  (0) 2021.04.07
9일차  (0) 2021.04.07