GUI(그래픽 유저 인터페이스)

2023. 7. 25. 12:34JAVA

Java언어의 GUI 프로그래밍 - SWING API 사용

import java.awt.FlowLayout;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// Java언어의 GUI 프로그래밍 - SWING API 사용
		
		//1. 최상위 컨테이너용 컴포넌트를 생성
		JFrame frame = new JFrame("Swing GUI");	
		//프레임의 사이즈를 설정
		frame.setSize(500, 400);
		
		// 기본적으로 JFrame에는 BorderLayout이라는 배치관리자가 설정되어 있음.
		// 가장 쉬운 배치관리자 flowLayout으로 변경
		frame.setLayout(new FlowLayout());
		
		//2. 컴포넌트들 추가하기
		JButton b1 = new JButton();
		b1.setText("button1");
		
		JButton b2 = new JButton("버튼2");
		
		// 프레임에 추가하기
		frame.add(b1);
		frame.add(b2);
		
		// JLabel - 글씨를 보여주는 컴포넌트
		JLabel labeㅣ= new JLabel();
		labeㅣ.setText("This is Label");
		frame.add(labeㅣ);
		
		// JTextField - 사용자로부터 글씨를 입력받는 컴포넌트
		JTextField tf = new JTextField(20); //20글자 사이즈
		frame.add(tf);
		
		//이미지 보여주기 - 애석하게 이미지용 컴포넌트 없음
		// JLabel에 아이콘(이미지)을 보여주는 추가 기능이 있음. - 이를 활용
		JLabel imgLabel= new JLabel();
		
		//아이콘 객체 만들기
		ImageIcon icon= new ImageIcon("image/ms19.png");
		imgLabel.setIcon(icon);
		frame.add(imgLabel);
		
		// 이미지 리사이징
		// ImageIcon객체에서 실제 그림파일을 가지고 잇는 Image객체 얻어오기
		Image img= icon.getImage();
		// 뽑아온 Image객체의 사이즈를 새롭게 만들기
		Image img2 = img.getScaledInstance(280, 280, Image.SCALE_SMOOTH);
		// img2를 감싸는 ImageIcon객체를 만들기
		ImageIcon icon2 = new ImageIcon(img2);
		// Label에 새 아이콘 설정
		imgLabel.setIcon(icon2);
		
		//swing의 JFrame은 기본적을 x 버튼을 눌러도 프로그램은 종료되지 않음
		//x버튼 클릭시에 프로그램도 같이 종료되도록 설정
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocation(300, 200); //프레임의 좌상단 좌표
		frame.setVisible(true); // 프레임 화면에 보이기
	}
}


JLabel - 글씨를 보여주는 컴포넌트


JTextField - 사용자로부터 글씨를 입력받는 컴포넌트

 

add를 사용해 컴포넌트를 추가해야함

'JAVA' 카테고리의 다른 글

GUI 깔끔하게 만들어보기  (0) 2023.07.25
네트워크 통신 - Client  (0) 2023.07.21
네트워크 통신 - Server  (0) 2023.07.21
FileOutput(파일 출력)  (0) 2023.07.20
FileInput(파일 입력)  (0) 2023.07.20