210730 금
1> CheckBox
package com.kh.chap03_component.view;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class D_CheckBox {
public void checkBoxTest() {
JFrame frame = new JFrame("CheckBox Test");
//JPanel생성
JPanel checkPanel = new JPanel();
JPanel resultPanel = new JPanel();
//check box객체를 여러개 사용하므로 배열로 선언하여 생성
JCheckBox[] buttons = new JCheckBox[3];
String[] fruits = {"apple", "banana", "orange"};
//문자열 전달하면서 checkBox 객체 생성 후 바로 패널 위에 올림
for(int i = 0 ; i < buttons.length ; i++) {
buttons[i] = new JCheckBox(fruits[i]);
checkPanel.add(buttons[i]);
}
//결과 문자 JLabel 생성해서 패널에 부착
JLabel text = new JLabel("선택한 과일이 없습니다.");
resultPanel.add(text);
//여러 개의 체크 박스를 대상으로 이벤트를 작성해야 하므로 반복문 사용
for(int i = 0 ; i < buttons.length ; i++) {
//항목이 선택 또는 해제 되었음을 나타내는 ItemEvent의 감지기
buttons[i].addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
//체크가 되어 있는 체크 박스를 모두 확인하여
//문자열을 새로 생성하고 라벨에 그 결과를 설정한다
String result = "";
for(int i = 0 ; i < buttons.length ; i++) {
//체크박스가 선택 되었는지 확인
if(buttons[i].isSelected()) {
//체크박스가 선택 된 경우 문자열을 result에 저장
result += buttons[i].getText() + " ";
}
}
//resultPanel의 JLabel의 값 변경
if(result.equals("")) {
text.setText("선택한 과일이 없습니다.");
}else {
text.setText(result);
}
}});
}
frame.add(checkPanel, "North");
frame.add(resultPanel, "Center");
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
2> ImageLabel
package com.kh.chap03_component.view;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class E_ImageLabel {
public void imageLabelTest() {
JFrame frame = new JFrame();
frame.setSize(250, 300);
//JPanel 생성
JPanel panel = new JPanel();
//이미지 크기 지정하여 이미지 객체 생성
Image icon =
new ImageIcon("image/user.PNG").getImage().getScaledInstance(150, 150, 0);
//JLabel 생성하여 Image 설정
JLabel label = new JLabel(new ImageIcon(icon));
panel.add(label);
//JButton 생성
JButton button = new JButton("이미지 변경");
panel.add(button);
//버튼 클릭 시 동작하는 이벤트
button.addActionListener(new ActionListener() {
int count = 0;
@Override
public void actionPerformed(ActionEvent e) {
String filePath = "";
if(count % 2 == 0) {
filePath = "image/dog.PNG";
}else {
filePath = "image/user.PNG";
}
count++;
Image icon =
new ImageIcon(filePath).getImage().getScaledInstance(150, 150, 0);
label.setIcon(new ImageIcon(icon));
}
});
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
3> ComboBox
package com.kh.chap03_component.view;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class F_ComboBox {
public void comboBoxTest() {
JFrame frame = new JFrame("ComboBox Test");
frame.setSize(300,200);
//콤보 박스 메뉴 목록을 문자열 배열로 만들고 생성자에 매개 변수로 전달
String[] animals = {"dog", "cat", "tiger"};
JComboBox animalList = new JComboBox(animals);
//처음 선택 되어 있을 값을 지정
animalList.setSelectedIndex(2);
//이미지가 올라갈 JLabel생성
JLabel label = new JLabel();
//라벨이 가운데 기준으로 수평 졍렬되었으면 좋겠다
label.setHorizontalAlignment(JLabel.CENTER);
//콤보 박스 선택이 일어날 때
animalList.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//System.out.println(e.getSource());
//이벤트 발생지
JComboBox cb = (JComboBox)e.getSource();
//선택된 아이템이 무엇인지 알아옴
String name = (String)cb.getSelectedItem();
//선택된 아이템에 해당하는 사진을 사이즈 조정하여 label에 설정
Image img =
new ImageIcon("image/" + name + ".PNG").getImage().getScaledInstance(150,150,0);
label.setIcon(new ImageIcon(img));
}});
//프레임에 컴포넌트 직접 부착
frame.add(animalList, "North");
frame.add(label, "South");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
4> List
package com.kh.chap03_component.view;
import java.awt.Dimension;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class G_List {
public void listTest() {
JFrame frame = new JFrame();
frame.setSize(300,200);
//JPanel 생성
JPanel listPanel = new JPanel();
//리스트를 구성할 배열 생성
String[] cities = {"서울", "대전", "대구", "부산", "경기", "인천", "강원", "제주"};
//JList 생성(생성자로 String 배열 전달)
JList<String> list = new JList<>(cities);
listPanel.add(list);
//리스트 선택 모드를 아무것도 설정하지 않으면 복수 선택이 기본값이다
//선택 모드 1. 단일 선택
//list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//선택 모드 2. 복수 선택 모드일 경우(1)
// 단, 인접한 리스트만 선택 가능
//list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
//선택 모드 3. 복수 선택 모드(2)
// 인접하지 않은 리스트도 선택 가능
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//리스트에 스크롤바 추가
JScrollPane scroller = new JScrollPane(list);
//Dimension : 크기를 지정하기 위한 클래스
//스크롤 패널의 사이즈를 지정하기 위해 Dimension 타입의 객체를 인자로 넣어줘야 함
scroller.setPreferredSize(new Dimension(200, 100));
//listPanel에 scroller추가
listPanel.add(scroller);
//결과 나타낸 resultPanel 생성
JPanel resultPanel = new JPanel();
JLabel label = new JLabel("선택 된 항목 : ");
JTextField selected = new JTextField(10);
selected.setEditable(false);
resultPanel.add(label);
resultPanel.add(selected);
//리스트 선택 시 발생하는 이벤트
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
//1. 단일 선택 모드일 경우
//selected.setText(list.getSelectedValue());
//2. 복수 선택 모드일 경우
List<String> li = list.getSelectedValuesList();
String result = "";
for(int i = 0; i < li.size() ; i++) {
result += li.get(i) + " ";
}
selected.setText(result);
}});
//프레임에 패널 부착
frame.add(listPanel, "North");
frame.add(resultPanel, "Center");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
5> Spinner
package com.kh.chap03_component.view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerListModel;
import javax.swing.SpinnerNumberModel;
public class H_Spinner {
public void spinnerTest() {
JFrame frame = new JFrame("Spinner Test");
frame.setSize(500, 100);
// 스피너 올릴 패널/결과 출력 패널 생성
JPanel panel = new JPanel();
JPanel resultPanel = new JPanel();
// 1. ListModel : 구성 아이템을 문자열 배열로
String[] items = {"소설", "잡지", "전공서적", "취미"};
SpinnerListModel listModel = new SpinnerListModel(items);
JSpinner spinner1 = new JSpinner(listModel);
panel.add(spinner1);
// 2. NumberModel : 숫자
// 생성자에 (시작값, 최소값, 최대값, 증가값) 전달
SpinnerNumberModel numberModel = new SpinnerNumberModel(1, 0, 9, 1);
JSpinner spinner2 = new JSpinner(numberModel);
panel.add(spinner2);
// 3. DateModel : 날짜
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime(); // 현재 날짜
calendar.add(Calendar.YEAR, -50);
Date start = calendar.getTime(); // 현재 날짜보다 50년 감소한 날짜
calendar.add(Calendar.YEAR, 100);
Date end = calendar.getTime(); // 현재 날짜보다 50년 증가한 날짜
// 해당 객체 설정 값이 -50 이여서 +100 처리
SpinnerDateModel dateModel = new SpinnerDateModel(today, start, end, Calendar.YEAR);
JSpinner spinner3 = new JSpinner(dateModel);
spinner3.setEditor(new JSpinner.DateEditor(spinner3, "yyyy/MM/dd"));
panel.add(spinner3);
// JButton 객체 생성
JButton button = new JButton("전송");
panel.add(button);
// resultPanel에 넣을 JLabel 객체 생성
JLabel text = new JLabel();
resultPanel.add(text);
// 버튼 클릭 시 발생 이벤트 핸들링
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 각 스피너의 현재 값을 가져와서 라벨에 setText
text.setText(spinner1.getValue() + ", "
+ spinner2.getValue() + ", " + spinner3.getValue());
}
});
// 프레임에 패널 올리기
frame.add(panel, "North");
frame.add(resultPanel, "Center");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
6> Slider
package com.kh.chap03_component.view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
public class I_Slider {
public void sliderTest() {
JFrame frame = new JFrame("Slider Test");
frame.setSize(300,300);
//패널 생성 후 라벨 올림
JPanel panel1 = new JPanel();
JLabel label = new JLabel("슬라이더를 움직여보세요");
panel1.add(label);
//패널 생성 후 슬라이더와 버튼 올림
JPanel panel2 = new JPanel();
//최소, 최대, 현재값
JSlider slider = new JSlider(0, 30, 15);
slider.setMajorTickSpacing(10); //큰 눈금 간격
slider.setMinorTickSpacing(1); //작은 눈금 간격
slider.setPaintTicks(true); //눈금 표시 기본 값 false
slider.setPaintLabels(true); //값을 라벨로 표시 기본값 false
panel2.add(slider);
JButton button = new JButton("전송");
panel2.add(button);
//패널 생성 후 결과 라벨 올림
JPanel panel3 = new JPanel();
JLabel text = new JLabel("결과 값 : ");
JLabel result = new JLabel();
panel3.add(text);
panel3.add(result);
//전송 버튼 이벤트
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
result.setText(String.valueOf(slider.getValue()));
}});
//프레임에 패널 올림
frame.add(panel1, "North");
frame.add(panel2, "Center");
frame.add(panel3, "South");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
7> Dialog
package com.kh.chap03_component.view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class J_Dialog {
public void dialogTest() {
JFrame frame = new JFrame("Dialog Test");
JPanel panel = new JPanel();
JButton button1 = new JButton("Simple Dialog");
panel.add(button1);
//다이얼로그 설정 값 넣어서 생성
JDialog dialog = new JDialog(frame, "새로운 창 이름");
dialog.setBounds(150,250,200,200);
//button1 클릭 시 dialog 보이게 처리
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.setVisible(true);
}});
//dialog에 닫기 버튼 생성하여 올림
JButton button2 = new JButton("close");
dialog.add(button2);
//button2 클릭 시 dialog 닫힘
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
//패널에 버튼 하나 더 올림
JButton button3 = new JButton("Input Dialog");
panel.add(button3);
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//1. 입력 다이어로그
//String result = JOptionPane.showInputDialog("내용을 입력하세요");
//System.out.println(result);
//취소 버튼이나 입력 없이 닫히면 null 리턴, 확인 누르면 입력 값 리턴
//2. 확인 다이어로그
//int result =
//JOptionPane.showConfirmDialog(null, "확인하시겠습니까?", "확인 창", JOptionPane.YES_NO_OPTION);
//System.out.println(result);
//int result =
//JOptionPane.showConfirmDialog(null, "확인하시겠습니까?", "확인 창", JOptionPane.YES_NO_CANCEL_OPTION);
//System.out.println(result);
//y => 0, n => 1, X => -1
//3. 메세지 다이어로그
JOptionPane.showMessageDialog
(null, "접근금지", "danger", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog
(null, "접근금지", "danger", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog
(null, "접근금지", "danger", JOptionPane.PLAIN_MESSAGE);
JOptionPane.showMessageDialog
(null, "접근금지", "danger", JOptionPane.QUESTION_MESSAGE);
JOptionPane.showMessageDialog
(null, "접근금지", "danger", JOptionPane.WARNING_MESSAGE);
}});
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
'웹개발 수업 > JAVA' 카테고리의 다른 글
[Day +30]스레드 & 미니 프로젝트 2일차 (0) | 2021.08.05 |
---|---|
[Day +29]이벤트 & 미니 프로젝트 1일차 (0) | 2021.08.04 |
[Day +27]GUI / Java Swing, 컨테이너, 컴포넌트 (0) | 2021.07.29 |
[Day +26]JAVA 2차 시험 & 미니 프로젝트 기획 시작 (0) | 2021.07.28 |
[Day +25]Collection / Map, Map계열 메소드, HashMap, Hashtable, TreeSet, TreeMap, Properties (0) | 2021.07.27 |