[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의 종류에 따라 달라진다.
앞으로의 게시글에서는 이같은 명칭을 따르도록 하겠다.
'JAVA > SWING' 카테고리의 다른 글
[Java swing] 자바 스윙 6 : 컴포넌트 위치 크기 지정 주의 사항 (0) | 2022.05.01 |
---|---|
[Java swing] 자바 스윙 5 : JTable 총정리 (0) | 2022.05.01 |
[Java swing] 자바 스윙 4 : 윈도우 빌더 설치, 버튼 누르면 다른 패널로 전환하기(모듈 나누기), 창 닫기 (0) | 2022.05.01 |
[Java swing] 자바 스윙 사용법 정리 3 : 로그인 창 구현 (0) | 2022.04.29 |
[Java swing] 자바 스윙 사용법 정리 2 : 버튼 누를 때 프로그램 종료, 문자열 출력하기 (0) | 2022.04.28 |