본문 바로가기
Back/JAVA

Java GUI(AWT, Swing) - JList, JLable, JTextFiel, JTable, JTabbedPane, JMenu, ETC

by 시월해 2021. 3. 22.

예제1) JList

package sist;

import javax.swing.*;

public class Ex10_JList extends JFrame{

	public Ex10_JList() {
		
		setTitle("JList 예제");
		JPanel jp = new JPanel();
		
		// 1. 컴포넌트를 만들어보자.
		String[] job = {"회사원", "공무원", "학생", "주부", "무직"};
		
		JList<String> list = new JList<String>(job);
		
		// 2. 컴포넌트를 컨테이너에 올리자.
		jp.add(list);
		
		// 3. 컨테이너는 프레임에 올려야 한다.
		add(jp);
		
		setBounds(100,100,300,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		 new Ex10_JList();

	}

}


 

package sist;

import javax.swing.*;

public class Ex11_JLable_JTextField extends JFrame{

	public Ex11_JLable_JTextField() {
		setTitle("JLable&JTextField 예제");
		JPanel jp = new JPanel();
		
		// 1. 컴포넌트를 만들어 보자.
		JLabel jl1 = new JLabel("이 름 : ");
		JTextField name = new JTextField(15);
		
		JLabel jl2 = new JLabel("학 과 : ");
		JTextField major = new JTextField(15);
		
		JLabel jl3 = new JLabel("주 소 : ");
		JTextField addr = new JTextField(15);
		
		// 2. 컴포넌트를 컨테이너에 올려야 한다.
		jp.add(jl1);  jp.add(name);
		jp.add(jl2);  jp.add(major);
		jp.add(jl3);  jp.add(addr);
		
		// 3. 컨테이너는 프레임에 올려야 한다.
		add(jp);
		
		setBounds(100,100,250,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		
		new Ex11_JLable_JTextField();
	}

}


예제3) JTable

package sist;

import javax.swing.*;

public class Ex12_JTable extends JFrame {

	public Ex12_JTable() {
		String[] header = {"학생이름","국어점수","영어점수","수학점수","JAVA점수"};
		
		String[][] contents = {
				{"홍길동","94","88","90","90"},
				{"이순신","90","55","77","99"},
				{"유관순","77","76","99","67"},
				{"김유신","66","98","99","98"},
				{"김연아","54","85","96","78"},
				{"강감찬","87","34","78","98"},
				{"세종대왕","100","100","100","89"},
				{"백종원","67","66","78","78"},
				{"유재석","87","87","87","89"},
				{"강호동","90","76","67","99"},
		};
		// JTable 컴포넌트는 컨테이너에 올리지 않고 바로 JFrame에 올려주면 된다.
		JTable table = new JTable(contents, header);
		
		// 1-1. 스크롤 기능을 추가해 보자.
		JScrollPane jsp = new JScrollPane
				(table,      //스크롤바가 보여질 컴포넌트 
				//수직 스크롤바 설치 여부
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,   
				//수평 스크롤바 설치 여부
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		
		// 2. JTable은 바로 프레임에 올려주면 된다.
		// Table이 아닌 스크롤바가 포함된 Pane을 올려주어야 한다.
		add(jsp);
		setBounds(100,100,250,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		
		new Ex12_JTable();
	}

}


예제4) JTabbedPane

package sist;

import java.awt.Color;

import javax.swing.*;

public class Ex13_JTabbedPane extends JFrame{

	public Ex13_JTabbedPane() {
		
		// 1. 탭의 갯수만큼 컨테이너가 만들어져야한다.
		JTabbedPane tab = new JTabbedPane();
		
		JPanel jp1 = new JPanel();
		JPanel jp2 = new JPanel();
		JPanel jp3 = new JPanel();
		
		// 1-1. 컨테이너마다 배경색을 다르게 지정해보자.
		jp1.setBackground(Color.ORANGE);
		jp2.setBackground(Color.GRAY);
		jp3.setBackground(Color.PINK);
		
		// 2-1-1. 첫번째 탭에 올라갈 컴포넌트를 만들어 보자.
		JButton jb1 = new JButton("버튼1");
		JButton jb2 = new JButton("버튼2");
		JButton jb3 = new JButton("버튼3");
		
		// 2-1-2. 첫번째 탭에 올려질 컴포넌트를 컨테이너(jp1)에 올려야 한다.
		jp1.add(jb1); jp1.add(jb2); jp1.add(jb3);
		
		// 2-2-1. 두번째 탭에 올라갈 컴포넌트를 만들어 보자.
		JCheckBox jcb1 = new JCheckBox("여행");
		JCheckBox jcb2 = new JCheckBox("운동");
		JCheckBox jcb3 = new JCheckBox("게임");
		JCheckBox jcb4 = new JCheckBox("잠자기");
		
		// 2-2-2. 두번째 탭에 올려질 컴포넌트를 컨테이너(jp2)에 올려야 한다.
		jp2.add(jcb1); jp2.add(jcb2); jp2.add(jcb3); jp2.add(jcb4);
		
		// 2-3-1. 세번째 탭에 올려질 컴포넌트를 만들어 보자.
		JRadioButton jrb1 = new JRadioButton("여행");
		JRadioButton jrb2 = new JRadioButton("잠자기");
		JRadioButton jrb3 = new JRadioButton("운동");
		JRadioButton jrb4 = new JRadioButton("게임");
		
		ButtonGroup bg = new ButtonGroup();
		bg.add(jrb1); bg.add(jrb2); bg.add(jrb3); bg.add(jrb4);
		
		// 2-3-2. 세번째 탭에 올려질 컴포넌트를 컨테이너(jp3)에 올려야 한다.
		jp3.add(jrb1); jp3.add(jrb2); jp3.add(jrb3); jp3.add(jrb4);
		
		// 3. 각각의 컨테이너들을 탭에 올려준다
		tab.add("버튼 탭", jp1); 
		tab.add("체크박스 탭", jp2); 
		tab.add("라디오버튼 탭", jp3);
		
		// 4. 탭을 프레임에 올려준다.
		add(tab);
		
		setBounds(200,200,300,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new Ex13_JTabbedPane();

	}

}


예제5) JMenu

package sist;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Ex14_JMenu extends JFrame{

	public Ex14_JMenu() {
	
		setTitle("메뉴");
		
		JMenuBar bar = new JMenuBar();
		
		// 1. 메뉴를 만들어 보자.
		JMenu jMenu1 = new JMenu("파일");
		JMenu jMenu2 = new JMenu("글자");
		JMenu jMenu3 = new JMenu("도움말");
		JMenu jMenu4 = new JMenu("글자체");
		JMenu jMenu5 = new JMenu("바탕색");
		
		// 2. 메뉴아이템을 만들어 보자.
		// 2-1. "파일"이라는 메뉴에 들어갈 메뉴 아이템을 만들어 보자.
		JMenuItem jmi1 = new JMenuItem("새파일");
		JMenuItem jmi2 = new JMenuItem("열   기");
		JMenuItem jmi3 = new JMenuItem("저   장");
		JMenuItem jmi4 = new JMenuItem("종   료");
		
		// 2-2-1. "글자 -> 글자체"라는 메뉴에 들어갈 메뉴아이템을 만들어 보자.
		JMenuItem jmi5 = new JMenuItem("굴림, 기본, 10");
		JMenuItem jmi6 = new JMenuItem("궁서, 굵게, 20");
		JMenuItem jmi7 = new JMenuItem("돋움, 기울기, 30");
		
		// 2-2-2. "글자 -> 바탕색"이라는 메뉴에 들어갈 메뉴아이템을 만들어보자.
		JMenuItem jmi8 = new JMenuItem("노란색");
		JMenuItem jmi9 = new JMenuItem("회색");
		JMenuItem jmi10 = new JMenuItem("초록색");
		
		// 2-3. "도움말"이라는 메뉴에 들어갈 메뉴 아이템을 만들어 보자.
		JMenuItem jmi11 = new JMenuItem("도움말");
		JMenuItem jmi12 = new JMenuItem("메모장 정보");
		
		// 3. 메뉴아이템(JMenuItem)을 메뉴(JMenu)에 올려주어야 한다.
		// 3-1. "파일" 메뉴에 들어갈 메뉴아이템을 올리자.
		jMenu1.add(jmi1); jMenu1.add(jmi2); jMenu1.add(jmi3);
		jMenu1.addSeparator();
		jMenu1.add(jmi4);
		
		// 3-2. "글자" 메뉴에 "글자체"를 올려야한다.
		jMenu4.add(jmi5); jMenu4.add(jmi6); jMenu4.add(jmi7);
		jMenu2.add(jMenu4);
		jMenu2.addSeparator();
		jMenu5.add(jmi8); jMenu5.add(jmi9); jMenu5.add(jmi10);
		jMenu2.add(jMenu5);
		
		// 3-3. "도움말" 메뉴에 메뉴아이템을 올려야 한다.
		jMenu3.add(jmi11);
		jMenu3.addSeparator();
		jMenu3.add(jmi12);
		
		// 4. 메뉴를 메뉴바에 올려주어야 한다.
		bar.add(jMenu1); bar.add(jMenu2); bar.add(jMenu3);
		
		// 5. 메뉴바를 프레임에 올려야한다.
		setJMenuBar(bar);
		
		setBounds(200,200,300,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new Ex14_JMenu();
	}

}


예제6) JScrollPane

package sist;

import javax.swing.*;

public class Ex15_ETC extends JFrame{

	public Ex15_ETC() {
		
		setTitle("기타예제");
		
		JPanel jp = new JPanel();
		
		// 1. 컴포넌트를 만들어 보자.
		JLabel jl1 = new JLabel("아이디 : ");
		JTextField id = new JTextField(10);
		
		JLabel jl2 = new JLabel("비밀번호 : ");
		JPasswordField pwd = new JPasswordField(10);
		
		JLabel jl3 = new JLabel("하고 싶은 말 : ");
		JTextArea jta = new JTextArea(5, 30);
		
		JScrollPane jsp = new JScrollPane(
				jta,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		
		// TextArea 컴포넌트에서 자동 줄바꿈 기능 제공 메서드
		jta.setLineWrap(true);
		
		// 2. 컴포넌트를 컨테이너에 올리기
		jp.add(jl1); jp.add(id);
		jp.add(jl2); jp.add(pwd);
		jp.add(jl3); jp.add(jsp); // ScrollPane이 적용된 컴포넌트는 Pane을 올린다.

		// 3. 컨테이너를 프레임에 올리기
		add(jp);
		
		setBounds(100,100,250,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		new Ex15_ETC();

	}

}