JAVA/GUI

[자바] JPanel

yujin0517 2021. 7. 15. 11:07

JFrame을 상속받아 JPanel, JButton을 사용하는 코드 작성하기 

 

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyPaner extends JFrame {
	
	JPanel panel1;  //JPanel 타입으로 panel 변수 선언하기
	JPanel panel2;
	JPanel panel3;
	JPanel panel4;
	JButton button1;  //JButton 타입으로 button 변수 선언하기
	JButton button2;
	JButton button3;
	JButton button4;
	
	public MyPaner() {   //메소드를 실행하는 생성자
		initData();
		setIninLayout();
	}
	
	private void initData() {
		this.setTitle("panel 만들기");   //제목 설정
		this.setSize(500, 500);   //창 크기 설정
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 창 닫기 클릭 시 창 닫힘
        
		panel1 = new JPanel();  //객체 생성
		panel2 = new JPanel();
		panel3 = new JPanel();
		panel4 = new JPanel();
		button1 = new JButton("button1");  //객체 생성 및 버튼 이름 설정
		button2 = new JButton("button2");
		button3 = new JButton("button3");
		button4 = new JButton("button4");
	}
	
	private void setIninLayout() {
		this.setVisible(true);  //true값을 넣어주지 않으면(false를 넣으면) 실행시켜도 창이 뜨지 않음 
		this.setLayout(new BorderLayout());  //BorderLayout 객체 생성
        
		this.add(panel1, BorderLayout.NORTH);  //창에 panel추가 및 위치 설정
		this.add(panel2, BorderLayout.SOUTH);
		this.add(panel3, BorderLayout.WEST);
		this.add(panel4, BorderLayout.EAST);
		
		panel1.setBackground(Color.CYAN);  //panel 색상 설정
		panel2.setBackground(Color.lightGray);
		panel3.setBackground(Color.GREEN);
		panel4.setBackground(Color.YELLOW);
		
		panel1.add(button1);  //창에 버튼 추가
		panel2.add(button2);
		panel3.add(button3);
		panel4.add(button4);
	}
	
}
/////////////////////구분선//////////////////////
public class Panel {
	public static void main(String[] args) {
		new MyPaner();  //이 코드가 있어야 실행 시 창이 뜸
	}
}

실행 완료

 

코드의 큰 틀은 "JButton 만들기 + 클릭 이벤트" 글에 설명해뒀고, 더 필요한 부분은 각 코드에 주석을 달아 설명했습니다.

원래는 panel을 동서남북으로 위치시키고, 각각의 panel에 button을 CENTER에 추가하려 했지만,

setBounds와 setLocaation을 사용해도 button3, button4 2개가 CENTER에 위치하지 않네요...

더 찾아보고 공부해서 완성시켜 보겠습니다!

 

감사합니다!

 

2021.07.15