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();
}
}