[Java swing] 자바 스윙 사용법 정리 1 : 창 띄우기, Frame, Panel, Button, Label, TextArea 객체 생성

728x90

[Java swing] 자바 스윙 사용법 정리 : 1

 

작업환경 : 이클립스

 

이클립스에서의 프로젝트 생성법과 기본적인 자바 문법을 숙지했다는 가정하에 설명한다.

 

창 띄우기

JFrame frame = new JFrame();

Frame 객체를 생성. Frame의 멤버 함수들을 통해 창에 대한 설정값을 부여할 수 있음.

객체 이름이 frame이기 때문에 frame.멤버함수(); 의 방법으로 창에 대해 설정한다.

 

frame.setResizable(false); // 화면 크기 조정 가능 여부. true는 조정가능. false는 불가능.
frame.setVisible(true); // 화면이 보이게 하기
frame.setPreferredSize(new Dimension(840, 630));  // 선호되는 창 크기. ex) 사진의 이미지와 창 사이즈가 안맞을 때 조정
frame.setSize(840, 630);  // 창 크기 설정
frame.setLocationRelativeTo(null); // 화면 가운데에 띄우기
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프로그램 종료시 완전 종료시키기

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 를 안하고 빌드시키면 창을 종료시켜도 프로그램이 계속 돌아가고 있는 것을 확인할 수 있다. 완전 종료시키기 위해 필요함.

 

만약 import 관련 에러가 생기면 이클립스의 경우 ctrl + shift + o키를 누르면 자동으로 필요한 라이브러리가 import된다.

JPanel

JFrame이 하나의 통짜 프레임이었다면,

JPanel은 그 안에서 구성되는 각각의 프레임이다.

JFrame내에 JPanel을 올리고 그 위에 버튼과 같은 UI들을 올리는 방식으로 구현할 수 있다.

 

 

panel.setLayout(new BorderLayout());

panel 객체에 대해 BorderLayout을 사용하여 간편하게 위치를 설정할 수 있도록 한다.

 

BorderLayout은 WEST, EAST, CENTER, SOUTH 방향으로 panel, table, button등과 같은 컨테이너들을 배치시킬 수 있도록 도와준다.

 

 

JLabel label = new JLabel("some text"); // 텍스트

라벨은 개발자가 입력한 텍스트를 화면에 띄울 수 있도록 하는 클래스이다.

패널의 BorderLayout을 활용하여 다음과 같이 특정 위치에 패널을 설정하고 패널위에 라벨을 올릴 수 있다.

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

public class Frame{
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        JLabel label = new JLabel("some text"); // 텍스트

        frame.setResizable(false); // 화면 크기 조정 가능 여부
        frame.setVisible(true); // 화면이 보이게 하기
        frame.setPreferredSize(new Dimension(840, 630));  // 선호되는 창 크기. ex) 사진의 이미지와 창 사이즈가 안맞을 때 조정
        frame.setSize(840, 630);  // 창 크기 설정
        frame.setLocationRelativeTo(null); // 화면 가운데에 띄우기
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프로그램 종료시 완전 종료시키기
		
        frame.add(panel); // 패널을 frame 위에 올림.
        panel.setLayout(new BorderLayout()); // BorderLayout: 자기가 원하는 곳에 레이블이나 패널등을 위치시킴
        panel.add(label, BorderLayout.NORTH); // panel 위쪽 방향에 라벨을 올림
        
    }

}

일일이 다 외울 필요 전혀없고, 필요한 코드만 끌어다 쓰면 된다.

JButton

JButton btn = new JButton("Click this"); // 버튼 객체 생성

인수부분에 버튼 내부의 텍스트를 설정할 수 있다.

panel.add(btn, BorderLayout.WEST);

마찬가지로 기존 패널에 올리는 방법으로 버튼을 화면상에 보이도록 설정한다.

 

 

JText

JTextArea txtArea = new JTextArea(); // 텍스트 입력 창
JTextField txtField = new JTextField(200); // 적은양의 텍스트 입력 창. 입력 크기를 인수로 준다.

프로그램 실행 이후에 사용자가 입력할 수 있는 텍스트 창에 대한 객체를 생성한다.

입력 크기가 적은 창의 경우 JTextField를 사용하지만, 인수값으로 입력 크기를 설정해야 한다.

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

public class Frame{
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        JLabel label = new JLabel("some text"); // 텍스트
        JButton btn = new JButton("Click this"); // 버튼
        JTextArea txtArea = new JTextArea(); // 텍스트 입력 창

        frame.setResizable(false); // 화면 크기 조정 가능 여부
        frame.setVisible(true); // 화면이 보이게 하기
        frame.setPreferredSize(new Dimension(840, 630));  // 선호되는 창 크기. ex) 사진의 이미지와 창 사이즈가 안맞을 때 조정
        frame.setSize(840, 630);  // 창 크기 설정
        frame.setLocationRelativeTo(null); // 화면 가운데에 띄우기
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프로그램 종료시 완전 종료시키기

        frame.add(panel); // 패널을 frame 위에 올림.
        panel.setLayout(new BorderLayout()); // BorderLayout: 자기가 원하는 곳에 레이블이나 패널등을 위치시킴
        panel.add(label, BorderLayout.NORTH); // panel 위쪽 방향에 라벨을 올림
        panel.add(btn, BorderLayout.WEST);
        panel.add(txtArea, BorderLayout.CENTER);
    }
}

 

 

frame, panel처럼 틀을 잡아주는 것은 Container라고 부르고,

그 위에 올라가는 Button, TextField, Label과 같은 UI는 Component라고 부른다.

각 요소들을 어떻게 배치시키는지는 Layout의 종류에 따라 달라진다.

앞으로의 게시글에서는 이같은 명칭을 따르도록 하겠다.

728x90