본문 바로가기

기록/자바_국비

[배운내용정리] 1207 자바 국비교육

728x90

2020년 12월 07일 9시 ~ 15시 30분 zoom으로 수업 진행

 


 

package com.test03.container;

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.JTextField;

public class B_TextFiledTest {

	public static void main(String[] args) {
		JFrame mf = new JFrame();
		mf.setSize(300, 130);
		
		//패널 생성
		JPanel panel = new JPanel();
		
		//라벨 추가
		panel.add(new JLabel("숫자 입력 : "));
		
		//텍스트필드 추가
		JTextField text = new JTextField(15);
		panel.add(text);
		
		
		//결과 영역
		panel.add(new JLabel("제곱한 값"));
		
		JTextField result = new JTextField(15);
		result.setEditable(false);//수정할수 없게 함
		panel.add(result);
		
		//버튼 생성
		JButton btn = new JButton("ok");
		btn.addActionListener(new ActionListener() {
				
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					//클릭 시 텍스트 상자의 값을 가져와 계산 후 result에 처리
					int num = Integer.parseInt(text.getText());
					result.setText(num * num + "");
				} catch (NumberFormatException e2) {
					System.out.println("숫자만 입력해주세요");
				}
				//text필드로 포커스 가져가기
				text.requestFocus();
				
			}
		});
		panel.add(btn);
		
		//프레임에 패널 부착
		mf.add(panel);
		mf.setVisible(true);
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

}

 

package com.test03.container;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class C_TextArea {

	public static void main(String[] args) {
		JFrame mf = new JFrame();
		
		//입력용 텍스트 필드
		JTextField tf = new JTextField(30);
		
		//출력용 텍스트 에어리어
		JTextArea ta = new JTextArea(10, 30);
		
		tf.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//해당 컴포넌트에서 발생된 이벤트를 알아서 감지해서
				//이벤트가 발생했을 경우 해당 메소드안의 내용이 실행된다
				String text = tf.getText();
				ta.append(text + "\n");
				
				tf.setText("");
				tf.requestFocus();
			}
		});
		
		mf.add(tf, "North");
		mf.add(ta, "Center");
		
		//컨테이너 크기를 구성요소들의 크기로 설정
		mf.pack();
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mf.setVisible(true);
	}

}

 

package com.test03.container;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class D_RadioButtonTest {

	public static void main(String[] args) {
		JFrame mf = new JFrame("라디오 버튼 테스트");
		mf.setSize(300, 150);
		
		JPanel topPanel = new JPanel();
		JLabel lbl = new JLabel("어떤 크기의 커피를 주문하시겠습니까? ");
		
		topPanel.add(lbl);
		mf.add(topPanel, "North");
		
		JPanel sizePanel    = new JPanel();
		JRadioButton small  = new JRadioButton("small size");
		JRadioButton medium = new JRadioButton("medium size");
		JRadioButton large  = new JRadioButton("large size");
		
		//버튼 그룹으로 라디오 버튼을 그룹화 시켜주지 않으면
		//라디오버튼을 복수로 사용하게 된다
		//여러 개의 라디오 버튼 중 하나만 사용하게 하고 싶다면 버튼그룹을 사용하자
		ButtonGroup size = new ButtonGroup();
		//라디오버튼 그룹화
		size.add(small);
		size.add(medium);
		size.add(large);
		
		//그룹화시킨 라디오 버튼들을 패널에 배치
		sizePanel.add(small);
		sizePanel.add(medium);
		sizePanel.add(large);
		
		//라디오버튼이 배치된 패널을 프레임에 부착
		mf.add(sizePanel, "Center");
		
		JPanel resultPanel = new JPanel();
		JLabel text = new JLabel("크기가 선택되지 않았습니다.");
		resultPanel.add(text);
		
		mf.add(resultPanel, "South");
		
		small.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				text.setText("Small Size가 선택되었습니다.");
				
			}
		});
		
		medium.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				text.setText("Medium Size가 선택되었습니다.");
				
			}
		});
		
		large.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				text.setText("Large Size가 선택되었습니다.");
				
			}
		});
		
		
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mf.setVisible(true);
	}

}

 

package com.test03.container;

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 E_CheckBoxTest {

	public static void main(String[] args) {
		JFrame mf = new JFrame("체크박스 테스트");
		mf.setSize(300,200);
		
		String[] animals = {"cat", "dog", "tiger"};
		
		//콤보박스 생성
		JComboBox animalList = new JComboBox(animals);
		
		//처음 선택되어있는 값 지정
		animalList.setSelectedIndex(1);
		
		JLabel lbl = new JLabel("");
		
		animalList.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//어떤 메뉴를 선택ㄷ했는지 요소를 가져온다
				JComboBox cb = (JComboBox)(e.getSource());
				//선택된 메뉴의 텍스트를 가지고온다.
				String name = cb.getSelectedItem().toString();
				//getSelectedItem의 반환형이 Object형이라 String 형변환
				
				//선택된 이름에 해당하는 사진을 띄워준다.
				Image img = new ImageIcon("images/" + name + ".PNG").getImage().getScaledInstance(150, 150, 0);
				lbl.setIcon(new ImageIcon(img));
				
			}
		});
		
		lbl.setHorizontalAlignment(JLabel.CENTER);
				
		mf.add(animalList, "North");
		mf.add(lbl, "South");

		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mf.setVisible(true);
	}

}

 

package com.test03.container;

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 F_ComboBoxTest {

	public static void main(String[] args) {
		JFrame mf = new JFrame("콤보박스 테스트");
		
		String[] fruits = {"apple", "orange", "banana"};
		
		JCheckBox[] buttons = new JCheckBox[3];
		for(int i=0; i<buttons.length; ++i) {
			buttons[i] = new JCheckBox(fruits[i]);
		}
		
		//여러개의 체크박스를 반복문을 사용해 부착
		JPanel checkPanel = new JPanel();
		for(int i=0; i<buttons.length; ++i) {
			checkPanel.add(buttons[i]);
		}
		
		JPanel resultPanel = new JPanel();
		JLabel text = new JLabel("선택한 과일이 없습니다.");
		resultPanel.add(text);
		
		mf.add(checkPanel, "North");
		mf.add(resultPanel, "Center");
		//North에 두 줄로 패널을 놓고싶다면
		//패널 하나에 -> 다른 패널 2개를 넣고,,, 패널 2개가 포함되오있는 패널을 프레임에 부착시켜준다
		
		
		//이벤트 연결
		for(int i=0; i<buttons.length; ++i) {
			buttons[i].addItemListener(new ItemListener() {
				
				@Override
				public void itemStateChanged(ItemEvent e) {
					//아이템의 상태가 변경된 것을 감지할 때 이벤트 처리
					String result = "";
					int cnt=0;
					
					//체크되어있는 체크박스를 확인
					for(int i=0; i<buttons.length; ++i) {
						if(buttons[i].isSelected()) {
							result += buttons[i].getText() + " ";
							cnt++;
						}
						text.setText(result);
					}
					
					if(cnt == 0) {
						//선택된게 없을 경우
						text.setText("선택된 과일이 없습니다.");
					}
					
				}
			});
		}
		
		
		mf.pack();
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mf.setVisible(true);
	}

}

 

package com.test03.container;

import java.awt.Dimension;
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_ListTest {

	public static void main(String[] args) {
		JFrame mf = new JFrame("리스트 테스트");
		mf.setSize(300, 200);
		
		JPanel listPanel = new JPanel();
		JPanel panel = new JPanel();
		
		String[] cities = {"서울", "대전", "대구", "부산", "경기", "전주", "광주", "제주"};
		
		JList list = new JList(cities);
		
		//리스트에 스크롤바 추가
		JScrollPane scroller = new JScrollPane(list);
		
		scroller.setPreferredSize(new Dimension(200, 50));
		
		//리스트의 선택 모드를 단일 선택 모드로 변경
		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		
		JLabel lbl = new JLabel("선택된 항목");
		JTextField selected = new JTextField(10);
		selected.setEditable(false);
		
		list.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent e) {
				selected.setText((list.getSelectedValue().toString()));
				//리스트에서 아이템이 선택될 경우 이벤트 발생 -> 선택된 리스트의 텍스트 값을 얻어와 selected라는 텍스트필스에 값을 지정
				
			}
		});
		
		
		panel.add(lbl);
		panel.add(selected);
		listPanel.add(scroller);
		
		mf.add(listPanel, "North");
		mf.add(panel, "Center");
		
		
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mf.setVisible(true);
	}

}

 

package com.test03.container;

import java.awt.Component;
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 H_SliderTest {

	public static void main(String[] args) {
		JFrame mf = new JFrame("슬라이더 테스트");
		mf.setSize(300, 300);
		
		JPanel panel = new JPanel();
		JLabel lbl = new JLabel("슬라이더를 움직여보세요", JLabel.CENTER);// -> 라벨의 위치 y값을 중앙으로 
		lbl.setAlignmentX(Component.CENTER_ALIGNMENT);//라벨의 위치 x값을 중앙으로 
		panel.add(lbl);
		
		JPanel panel2 = new JPanel();
		JSlider slider = new JSlider(0, 30, 15);//최소값, 최대값, 시작 시 기본값
		slider.setMajorTickSpacing(10);//큰 눈금 간격
		slider.setMinorTickSpacing(1); //작은 눈금 간격
		slider.setPaintTicks(true);    //슬라이더에 눈금 표시 슬라이더에 눈금이 생겼다!
		slider.setPaintLabels(true);   //눈금 밑에 숫자가 생겼다 (큰 눈금의 값을 표기)
		
		panel2.add(slider);
		
		JButton btn = new JButton("전송");
		panel2.add(btn);
		
		JPanel resultPanel = new JPanel();
		JLabel text = new JLabel("결과 값 : ");
		resultPanel.add(text);
		
		btn.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				text.setText(slider.getValue() + "");
				
			}
		});
		
		
		mf.add(panel, "North");
		mf.add(panel2, "Center");
		mf.add(resultPanel, "South");
		
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mf.setVisible(true);
	}

}
package com.test03.container;

import java.awt.Dialog;
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.JOptionPane;
import javax.swing.JPanel;

public class I_DialogTest {

	public static void main(String[] args) {
		JFrame mf = new JFrame("다이얼로그 테스트");

		JPanel panel = new JPanel();
		JButton btn = new JButton("Simple Dialog");

		// 다이얼로그 설정
		Dialog sd = new Dialog(mf, "Simple Dialog");
		sd.setBounds(150, 250, 150, 150);
		sd.add(new JLabel("simple Dialog test"), "North");

		JButton btn2 = new JButton("close");
		sd.add(btn2, "Center");

		JButton btn3 = new JButton("Input Dialog");
		panel.add(btn3);

		// 심플 다이얼로그 보여지게
		btn.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				sd.setVisible(true);

			}
		});

		// close 누르면 다이얼로그 닫기
		btn2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				sd.dispose();

			}
		});
		
		btn3.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String result = JOptionPane.showInputDialog("내용을 입력하세요");
				System.out.println(result);

			}
		});

		panel.add(btn);
		mf.add(panel);

		mf.pack();
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mf.setVisible(true);
	}

}