반응형

1. GUI란?


graphic user interface의 약자이고, TUI(text user interface)와 반대 개념이다.

즉, 지금까지 경험해본 내용은 TUI에서 진행되었다면, 그래픽을 입힌 프로그램을 제작하는 것은 GUI이다.


2. Swing이란?


기존에 자바에서는 GUI지원을 AWT로 하였는데 AWT는 모든 운영체제에서 다르게 출력되는 현상이 있어서

이를 개선한 것이 Swing이다. Swing은 모든 운영체제에 통일된 화면을 제공해준다.


따라서 다양한 GUI 지원 플랫폼이 많지만, Swing을 이용해서 GUI를 구현해 보고자 한다.


기본적인 GUI를 메소드를 이용하여 윈도우를 생성해보자.


1.

import javax.swing.JFrame;을 통해 GUI 제작을 위한 swing을 import해준다.


2.

하나의 클래스를 만들어 extends JFrame를 해준다.(상속)


3.

setSize(width, height);를 통해 윈도우 크기를 설정해준다.


4.

setVisible(true);를 통해 윈도우가 나타나도록 설정해 주어야 한다.



Option)


1.

setTitle("타이틀 명");을 통해 윈도우 타이틀 명을 생성한다.(없어도 생성은 된다.)


2.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);를 이용하여 종료 버튼을 생성 할 수 있다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 *  스윙 관련 JFrame 클래스를 임포트 하여
 *  GUI를 제작하는데 이용한다.
 */
package JavaBasic;
import javax.swing.JFrame; 
 
public class Jmain {
    
    static class setGUI extends JFrame{
        
        // 생성자를 통해 GUI 초기 세팅을 해준다.
        setGUI(){
            
            // 윈도우 제목(Title)을 생성
            setTitle("GUI TITLE");
            
            // 이 부분부터 원하는 버튼, 레이블, 콤보박스 등등 설정
            
                        
            // 종료 버튼 생성
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // 윈도우 창 크기 설정(가로, 세로)
            setSize(500500);
            
            // 이 메소드를 이용해야 윈도우 창이 나타난다.
            setVisible(true);
        }
    }
    
    
    public static void main(String[] args){
        
        new setGUI();
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus









3. 레이아웃이란?


디자인 ·광고 ·편집에서 문자 ·그림 ·기호 ·사진 등의 각 구성요소를 제한된 공간 안에 효과적으로 배열하는 일, 또는 그 기술.

(출처 :: http://terms.naver.com/entry.nhn?docId=1087845&cid=40942&categoryId=33074)


자바에서도 마찬가지로 배치를 위해 레이아웃을 구성한다고 말한다.



레이아웃은 다음과 같이 여러가지 방식이 존재한다.

>> 여기서는 3가지 방식에 대해 알아 보도록 한다.


Windows 레이아웃 설정 형식

컨테이너.setLayout(new 레이아웃종류());


위의 내용에서 수정되는 내용은 import 부분이니 아래 코드에서 참조하길 바랍니다.

(CardLayout은 생략하도록 하겠습니다.)


1. FlowLayout

특정 정렬 없이 윈도우 창에서 왼쪽 위 -> 오른쪽 아래로 차례대로 꾸며가는 방법을 의미한다.


FlowLayout은 함수 오버로딩을 제공한다.

FlowLayout(); // 아무 설정이 없다면, 가운데 정렬 그리고 수직 및 수평 간격은 5px로 된다.

FlowLayout(정렬방식);

FlowLayout(정렬방식, 수평간격, 수직간격);


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
 *  스윙 관련 JFrame 클래스를 임포트 하여
 *  GUI를 제작하는데 이용한다.
 *  이때 버튼 및 다양한 GUI를 이용하기 위해 
 *  awt.*, swing.*를 임포트한다.
 */
package JavaBasic;
import java.awt.*;
import javax.swing.*
 
public class Jmain {
    
    static class setGUI extends JFrame{
        
        // 생성자를 통해 GUI 초기 세팅을 해준다.
        setGUI(){
            
            // 윈도우 제목(Title)을 생성
            setTitle("GUI TITLE");
            
            // 이 부분부터 원하는 버튼, 레이블, 콤보박스 등등 설정
            
            // FlowLayout을 이용한다.
            this.setLayout(new FlowLayout());
            
            JButton btn1 = new JButton("버튼1");    
            this.add(btn1);        
            
            JButton btn2 = new JButton("버튼2");  
            this.add(btn2);          
            
            JButton btn3 = new JButton("버튼3");  
            this.add(btn3);          
            
            JButton btn4 = new JButton("버튼4");
            this.add(btn4);        
            
            JButton btn5 = new JButton("버튼5");  
            this.add(btn5);      
 
            JButton btn6 = new JButton("버튼6");
            this.add(btn6);
 
            JButton btn7 = new JButton("버튼7");
            this.add(btn7);
                        
            // 종료 버튼 생성
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
            // 윈도우 창 크기 설정(가로, 세로)
            setSize(500500);
            
            // 이 메소드를 이용해야 윈도우 창이 나타난다.
            setVisible(true);
        }
    }
    
    
    public static void main(String[] args){
        
        new setGUI();
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus





2. BorderLayout

NORTH(위), SOUTH(아래), WEST(오른쪽), EAST(왼쪽) 등등 을 이용하여 레이아웃을 구성 할 수 있는 방법을 의미한다.


(다양한 구성 방식이 존재한다.)



BorderLayout은 함수 오버로딩을 제공한다.

BorderLayout();

BorderLayout(수평간격, 수직간격);


this.add(btn1, BorderLayout.위치); // 위치를 지정하기 위해서는 다음과 같이 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
 *  스윙 관련 JFrame 클래스를 임포트 하여
 *  GUI를 제작하는데 이용한다.
 *  이때 버튼 및 다양한 GUI를 이용하기 위해 
 *  awt.*, swing.*를 임포트한다.
 */
package JavaBasic;
import java.awt.*;
import javax.swing.*
 
public class Jmain {
    
    static class setGUI extends JFrame{
        
        // 생성자를 통해 GUI 초기 세팅을 해준다.
        setGUI(){
            
            // 윈도우 제목(Title)을 생성
            setTitle("GUI TITLE");
            
            // 이 부분부터 원하는 버튼, 레이블, 콤보박스 등등 설정
            
            // BorderLayout을 이용하고, 수평 및 수직 간격은 10px이다.
            this.setLayout(new BorderLayout(10,10));
            
            JButton btn1 = new JButton("버튼1");    
            this.add(btn1, BorderLayout.NORTH);        
            
            JButton btn2 = new JButton("버튼2");  
            this.add(btn2, BorderLayout.WEST);          
            
            JButton btn3 = new JButton("버튼3");  
            this.add(btn3, BorderLayout.CENTER);          
            
            JButton btn4 = new JButton("버튼4");
            this.add(btn4, BorderLayout.EAST);
            
            JButton btn5 = new JButton("버튼5");  
            this.add(btn5, BorderLayout.SOUTH);      
                        
            // 종료 버튼 생성
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
            // 윈도우 창 크기 설정(가로, 세로)
            setSize(500500);
            
            // 이 메소드를 이용해야 윈도우 창이 나타난다.
            setVisible(true);
        }
    }
    
    
    public static void main(String[] args){
        
        new setGUI();
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus




3. GridLayout

테이블 혹은 표 처럼 일정 공간을 가지는 레이아웃을 구성 할 수 있는 방법을 의미한다.


GridLayout은 함수 오버로딩을 제공한다.

GridLayout(); 

GridLayout(행, 열);

GridLayout(행, 열, 수평간격, 수직간격);


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
 *  스윙 관련 JFrame 클래스를 임포트 하여
 *  GUI를 제작하는데 이용한다.
 *  이때 버튼 및 다양한 GUI를 이용하기 위해 
 *  awt.*, swing.*를 임포트한다.
 */
package JavaBasic;
import java.awt.*;
import javax.swing.*
 
public class Jmain {
    
    static class setGUI extends JFrame{
        
        // 생성자를 통해 GUI 초기 세팅을 해준다.
        setGUI(){
            
            // 윈도우 제목(Title)을 생성
            setTitle("GUI TITLE");
            
            // 이 부분부터 원하는 버튼, 레이블, 콤보박스 등등 설정
            
            // GridLayout을 이용하고 수평, 수직 간격을 3px로 한다.
            this.setLayout(new GridLayout(3,3));
            
            JButton btn1 = new JButton("버튼1");    
            this.add(btn1);        
            
            JButton btn2 = new JButton("버튼2");  
            this.add(btn2);          
            
            JButton btn3 = new JButton("버튼3");  
            this.add(btn3);          
            
            JButton btn4 = new JButton("버튼4");
            this.add(btn4);
 
            JButton btn5 = new JButton("버튼5");  
            this.add(btn5);      
            
            JButton btn6 = new JButton("버튼6");  
            this.add(btn6);      
            
            JButton btn7 = new JButton("버튼7");  
            this.add(btn7);      
            
            JButton btn8 = new JButton("버튼8");  
            this.add(btn8);    
            
            JButton btn9 = new JButton("버튼9");  
            this.add(btn9);      
                        
            // 종료 버튼 생성
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
            // 윈도우 창 크기 설정(가로, 세로)
            setSize(500500);
            
            // 이 메소드를 이용해야 윈도우 창이 나타난다.
            setVisible(true);
        }
    }
    
    
    public static void main(String[] args){
        
        new setGUI();
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus







반응형