본문 바로가기
Programming/JAVA

자바 GUI 기초, AWT와 스윙

by 안녕주 2020. 12. 30.
import java.awt.*;
import javax.swing.*;

public class GridTest extends JFrame{
	public GridTest() {
		setTitle("Gui Test");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //X 눌렀을 때 닫히도록
		
		Container c = getContentPane();
		c.setLayout(new BorderLayout(15,15)); //컴포넌트 사이의 수평 수직 간격이 10,10 픽셀이 되도록 배치 관리자 설정
		
		JPanel pn = new JPanel(); //위쪽의 Label 
		pn.add(new JLabel("학생 정보 입력")); 
		c.add(pn, BorderLayout.NORTH);
		
		JPanel pt = new JPanel();
		pt.setLayout(new GridLayout(5,4,3,3)); //5행 4열로 과제의 그림과 같은 형태를 위해 좌우 위아래 간격을 3,3으로 준다.
		pt.add(new JLabel("이름")); //JLabel로 이름 학번 학과 연락처 추가
		pt.add(new JLabel("학번"));
		pt.add(new JLabel("학과"));
		pt.add(new JLabel("연락처"));
		for(int i =0;i<16;i++) {
			pt.add(new JTextField(10)); //16개의 JTextField 생성
		}	
		c.add(pt,BorderLayout.CENTER); //Center에
		
		JPanel pb = new JPanel();
		pb.add(new JButton("추가")); //JButton 추가 취소 생성
		pb.add(new JButton("취소"));
		c.add(pb, BorderLayout.SOUTH); //남쪽에
		
		
		setSize(400,300); // 프레임 크기 400X300 설정
		setVisible(true); //프레임을 화면에 출력
		
	}
	public static void main(String[] args) {
		new GridTest();
	}
}

명품자바프로그래밍 chapter9_lab8

실습1| border layout 만들기

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

public class BorderLayoutTest extends JFrame{
	public BorderLayoutTest() {
		setTitle("BorderLayout Practice");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //X 눌렀을 때 닫히도록
		
		
		Container c = getContentPane();
		c.setLayout(new BorderLayout(5,7)); //컴포넌트 사이의 수평 수직 간격이 5,7 픽셀이 되도록 배치 관리자 설정
		c.add(new JButton("North"), BorderLayout.NORTH); // 북쪽 버튼
		c.add(new JButton("Center"), BorderLayout.CENTER); //중간 버튼
		c.add(new JButton("West"), BorderLayout.WEST); //서쪽 버튼
		c.add(new JButton("East"), BorderLayout.EAST); //동쪽 버튼
		c.add(new JButton("South"), BorderLayout.SOUTH); //남쪽 버튼 
		 
		setSize(400,200); // 프레임 크기 400X200 설정
		setVisible(true); //프레임을 화면에 출력
		
	}
	public static void main(String[] args) {
		new BorderLayoutTest(); 
	}
}

 

실습2| gridlayout 만들기

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

public class GridLayoutTest extends JFrame{
	public GridLayoutTest() {
		setTitle("Ten Buttons Frame");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //X 눌렀을 때 닫히도록
		Container c = getContentPane();
		c.setLayout(new GridLayout(1,10)); // 1X10 그리드로 분할 
		
		Color[] color = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE, Color.MAGENTA, Color.GRAY, Color.PINK, Color.LIGHT_GRAY}; //색깔 배열 생성
		
		for(int i =0; i<10; i++) {
			String num = Integer.toString(i); //int형이 GridLayout에서 사용할수 없다는 오류메시지가 떠서 String 타입으로 변경해준다.
			JButton j = new JButton(num);
			j.setBackground(color[i]); //배경색 입혀주기
			c.add(j); //GridLayout 배치관리자를 가진 컨테이너에 컴포넌트를 부착한다.
		}
		
		setSize(600,200); // 프레임 크기 600X200 설정
		setVisible(true); //프레임을 화면에 출력
	}
	public static void main(String[] args) {
		new GridLayoutTest();
	}
}

 

실습3| JLabel 컴포넌트 랜덤

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

public class JLabelRandomTest extends JFrame{
	public JLabelRandomTest() {
		setTitle("Random Labels");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //X 눌렀을 때 닫히도록
		
		Container c = getContentPane();
		c.setLayout(null); //배치관리자가 없는 컨테이너
		
		for (int i =0;i<20;i++) {
			JLabel label = new JLabel(); //JLabel 컴포넌트
			int x = (int)(Math.random()*200) +50;
			int y = (int)(Math.random()*200) +50;
			label.setLocation(x,y); //(x,y) 좌표의 위치 지정
			label.setSize(10,10); 
			label.setOpaque(true); //JLabel의 경우 Opaque를 true로 해줘야지 배경색이 적용됨
			label.setBackground(Color.blue); //배경색은 파랑색으로
			c.add(label); ///컨테이너에  JLabel을 부착한다.
		}
		
		setSize(300,300); //프레임의 크기는 300X300
		setVisible(true); //프레임을 화면에 출력
	}
	
	public static void main(String[] args) {
		new JLabelRandomTest();
	}
}

 

실습4| guitest 만들기

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

public class GuiTest extends JFrame{
	public GuiTest() {
		setTitle("Gui Test");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //X 눌렀을 때 닫히도록
		
		Container c = getContentPane();
		c.setLayout(new BorderLayout(10,10)); //컴포넌트 사이의 수평 수직 간격이 10,10 픽셀이 되도록 배치 관리자 설정
		
		JPanel pn = new JPanel(); //애를 통해 위쪽 공백을 맞춰줌
		pn.add(new JLabel("")); 
		c.add(pn, BorderLayout.NORTH);
		
		
		JPanel pw = new JPanel();
		pw.setLayout(new GridLayout(4,1)); // 4행 1열
		pw.add(new JLabel("이름")); //JLabel로 이름 학번 전공 연락처 추가
		pw.add(new JLabel("학번"));
		pw.add(new JLabel("전공"));
		pw.add(new JLabel("연락처")); 
		c.add(pw,BorderLayout.WEST); //서쪽에
		 
		JPanel pt = new JPanel();
		pt.setLayout(new GridLayout(4,1,0,20));  //4행 1열로 과제의 그림과 같은 형태를 위해 좌우 위아래 간격을 0,20으로 준다.
		pt.add(new JTextField(10)); //4개의 JTextField 생성
		pt.add(new JTextField(10));
		pt.add(new JTextField(10));
		pt.add(new JTextField(10));		
		c.add(pt,BorderLayout.CENTER); //Center에
		
		JPanel pb = new JPanel();
		pb.add(new JButton("확인")); //JButton 확인 취소 생성
		pb.add(new JButton("취소"));
		c.add(pb, BorderLayout.SOUTH); //남쪽에
		
		
		setSize(350,300); // 프레임 크기 350X300 설정
		setVisible(true); //프레임을 화면에 출력
		
	}
	public static void main(String[] args) {
		new GuiTest();
	}
}

 

실습5 | 배치관리자 혼합 사용 실습

 

 

실습6 | 배치관리자 없이 배치하는 실습

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

public class StoryTest extends JFrame{
	public StoryTest() {
		setTitle("SM Story");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //X 눌렀을 때 닫히도록
		
		Container c = getContentPane();
		c.setLayout(null); //배치관리자가 없는 컨테이너 (절대 위치 사용)
		
		JLabel j0 = new JLabel("SM Story");
		j0.setLocation(20,10); //j0을 (20,10) 위치로 지정
		j0.setSize(100,40); //j0을 100X40 크기로 지정
		c.add(j0); //j0을 컨텐트팬에 부착
		
		JLabel j1 = new JLabel("가을은");
		j1.setLocation(80,60); //j1을 (80,60) 위치로 지정
		j1.setSize(100,40); //j1을 100X40 크기로 지정
		c.add(j1); //j1을 컨텐트팬에 부착
		
		JPanel j3 = new JPanel();
		j3.setLayout(new GridLayout());
		j3.setLocation(150,120); //j3을 (150,120) 위치로 지정
		j3.setSize(100,30); //j3을 100X3 크기로 지정
		j3.add(new JTextField(10)); //JTestFiled 생성
		c.add(j3); //j3을 컨텐트팬에 부착
		
		JLabel j4 = new JLabel("이다.");
		j4.setLocation(280,160); //j4을 (280,160) 위치로 지정
		j4.setSize(100,40); //j4을 100X40 크기로 지정
		c.add(j4); //j4을 컨텐트팬에 부착
		
		setSize(500,300); //프레임의 크기는 400X300
		setVisible(true); //프레임을 화면에 출력
		
	}
	public static void main(String[] args) {
		new StoryTest();
	}
}

 

 

'Programming > JAVA' 카테고리의 다른 글

기본적인 스윙 컴포넌트와 활용  (0) 2020.12.30
자바의 이벤트 처리  (0) 2020.12.30
자바 기말 플젝 코드(미완성)  (0) 2020.12.30
입출력 스트림과 파일 입출력  (0) 2020.10.16
제너릭과 컬렉션  (0) 2020.10.16

댓글