Swing (스윙)이란?
자바에서 GUI를 구현하기 위해 JDK에서 기본적으로 제공하는 개발 툴킷으로 선 마이크로시스템즈의 자바 기반 클래스의 일부이다.
GUI (Graphical User Interface)
이미지 혹은 그래픽으로 그린 버튼, 메뉴 등이 있는 화면에 마우스와 같은 입력 도구를 이용하여 사용자가 편리하게 입출력할 수 있도록 만든 사용자 인터페이스이다. 자바는 어떤 언어보다 강력한 GUI 라이브러리를 제공해서 다양한 GUI를 쉽게 구성할 수 있도록 도와준다.
↓ 라이브러리가 없어서 밑에 코드를 module-info.java 에 넣어주었다. ↓
/**
*
*/
/**
*
*/
module tenco_swing {
requires java.desktop;
}
package ch01;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
// Swing -> 배치 관리자 : FlowLayout
// 컴포넌트들을 (버튼, 라벨)등을 수평, 수직으로 배치를 해주는 클래스이다.
public class FlowLayoutEx extends JFrame{
private JButton button1;
private JButton button2;
// 4개 더 만들어서 추가하기
private JButton button3;
private JButton button4;
private JButton button5;
private JButton button6;
// 생성자
public FlowLayoutEx() {
super.setTitle("FlowLayout 연습");
super.setSize(500 ,500);
super.setVisible(true);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 생성자에서 메서드 호출 가능하다.
initData();
setInitLayout();
}
// 멤버 변수를 초기화하는 기능 (값을 넣다)
public void initData() {
button1 = new JButton("button1");
button2 = new JButton("button2");
button3 = new JButton("button3");
button4 = new JButton("button4");
button5 = new JButton("button5");
button6 = new JButton("button6");
}
// 컴포넌트들을 배치하는 기능
public void setInitLayout() {
// 배치 관리자 -> BorderLayout 이라는 배치관리자가 기본으로 활용된다.
//FlowLayout flowLayout = new FlowLayout();
//super.setLayout(new FlowLayout); // 배치관리자 -> FlowLayout
// 배치 관리자 생성 및 JFrame 세팅
//super.setLayout(new FlowLayout()); // 배치관리자 -> FlowLayout
// 버튼 간격조절
super.setLayout(new FlowLayout(FlowLayout.LEADING, 50, 50));
// 컴포넌트들을 붙이다.
super.add(button1);
super.add(button2);
super.add(button3);
super.add(button4);
super.add(button5);
super.add(button6);
}
// 코드 테스트
public static void main(String[] args) {
// FlowLayout f1 = new FlowLayoutEx(); // <- 익명 클래스
new FlowLayoutEx(); // <- 익명 클래스
// 다시 접근해서 사용할 일 없으면 new 라고 선언만 해도 된다.
}// end of main
}
위에서 작성 코드 중 반복되는 거 찾아서 반복문으로 변경하기
package ch01;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class FlowLayoutEx2 extends JFrame {
// 배열 활용
JButton[] buttons = new JButton[6];
// 생성자
public FlowLayoutEx2() {
super.setTitle("FlowLayout 연습");
super.setSize(500, 500);
super.setVisible(true);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 생성자에서 메서드 호출 가능하다.
initData();
setInitLayout();
}
// 멤버 변수를 초기화하는 기능 (값을 넣다)
public void initData() {
// 반복문 활용
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton("[button" + (i + 1) + "]");
}
}
// 컴포넌트들을 배치하는 기능
public void setInitLayout() {
// 배치 관리자 -> BorderLayout 이라는 배치관리자가 기본으로 활용된다.
// FlowLayout flowLayout = new FlowLayout();
// super.setLayout(new FlowLayout); // 배치관리자 -> FlowLayout
// 배치 관리자 생성 및 JFrame 세팅
// super.setLayout(new FlowLayout()); // 배치관리자 -> FlowLayout
// 버튼 간격조절
super.setLayout(new FlowLayout(FlowLayout.LEADING, 50, 50));
for (int i = 0; i < buttons.length; i++) {
super.add(buttons[i]);
}
}
// 코드 테스트
public static void main(String[] args) {
// FlowLayout f1 = new FlowLayoutEx(); // <- 익명 클래스
new FlowLayoutEx2(); // <- 익명 클래스
// 다시 접근해서 사용할 일 없으면 new 라고 선언만 해도 된다.
}// end of main
}
2. 동서남북센터에 위치하는 버튼
package ch01;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
// 단축키 습관 - ctrl + shift + s, f, o
public class BorderLayoutEx1 extends JFrame {
// 생성자
public BorderLayoutEx1() {
initData();
setInitLayout();
}
public void initData() {
setTitle("borderLayout 연습");
setSize(600, 600);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void setInitLayout() {
// 배치 관리자 선정 (컨테이너)
// BorderLayout - 컴포넌트들을 동서남북 가운데로 배치 시켜 주는 레이아웃이다.
setLayout(new BorderLayout());
add(new JButton("동"), BorderLayout.EAST);
add(new JButton("서"), BorderLayout.WEST);
add(new JButton("남"), BorderLayout.SOUTH);
add(new JButton("북"), BorderLayout.NORTH);
add(new JButton("센터"), BorderLayout.CENTER);
}
//코드의 시작점
public static void main(String[] args) {
new BorderLayoutEx1();
}// end of main
}
위에서 작성 코드 중 반복되는 거 찾아서 반복문으로 변경하기
package ch01;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
// 단축키 습관 - ctrl + shift + s, f, o
public class BorderLayoutEx2 extends JFrame {
final int WIDTH = 600;
final int HEIGHT = 600;
JButton[] buttons;
String[] directions = { BorderLayout.EAST, BorderLayout.WEST, BorderLayout.NORTH,
BorderLayout.SOUTH,BorderLayout.CENTER };
// 생성자
public BorderLayoutEx2() {
initData();
setInitLayout();
}
public void initData() {
setTitle("borderLayout 연습");
setSize(WIDTH, HEIGHT);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buttons = new JButton[directions.length];
}
public void setInitLayout() {
// 배치 관리자 선정 (컨테이너)
// BorderLayout - 컴포넌트들을 동서남북 가운데로 배치 시켜 주는 레이아웃이다.
setLayout(new BorderLayout());
// 반복문을 활용해서 코드를 완성하세요.
for (int i = 0; i < buttons.length; i++) {
add(new JButton(directions[i]), directions[i]);
}
}
// 코드의 시작점
public static void main(String[] args) {
new BorderLayoutEx2();
}// end of main
}
728x90
'Swing' 카테고리의 다른 글
EventListener (이벤트 리스너) (0) | 2024.05.03 |
---|---|
JLabel을 이용한 이미지 겹치는 방법 (0) | 2024.05.03 |
ImageIcon을 활용한 이미지 사용하는 방법 (0) | 2024.05.03 |
기본 컴포넌트 확인 (0) | 2024.05.03 |