기능대회 1일차

6973 단어 자바기술기술

2021년 10월달 쯤 있을 기능대회를 준비하기위해서 토요일마다 기능대회가 있다.
기능대회 수업에서 배운것들을 정리해서 다음에 공부하거나 복습할 때 도움이 되고자 한다.

JFrame

자바를 대부분의 애플리케이션 개발은 javax.swing을 이용한다. JFrame도 javax.swing에서 임포트해온 클래스중 하나인데. Frame은 말그대로 하나의 틀이다. 직관적이게 설명하자면 Frame은 하나의 창(Window)로써 로그인창, 회원정보 수정창, 삭제창 등으로 나뉠 수 있다. JFrame의 인스턴스는 가장 기본적으로 Title, 창의 크기를 수정할 수 있다.

BaseFrame

기본적으로 각각의 Frame은 공통적인 부분이 많을 수밖에 없다. 웹에서 네비게이션바는 대부분의 페이지에서 중복되듯이
Frame도 마찬가지 때문에 baseFrame을 만들어둔 후 필요할 때 마다 사용하면 코드 중복을 줄일 수 있다..

직접 코드를 보며 단번에 이해해보자.
BaseFrame.java

import javax.swing.JFrame;

public class baseFrame extends JFrame{
	public baseFrame(String title, int width, int height){
    		setTitle(title);
        	setSize(width, height);
    	}
 }

UserFrame.java

public UserFrame extends baseFrame{
    	public UserFrame(){
    		super("Title", width, height);
    	}
}

각 창마다 baseFrame을 상속받아서 super(부모클래스의 생성자)를 호출해 Frame을 생성할 수 있다.

컴포넌트

위에서는 Frame을 규정했다. 그럼 다음에 해야할 일은 무엇일까?
Frame을 규정하고 컴포넌트를 넣지 않으면 그냥 빈 창만 뜰 것이다. 그래서 우리는 컴포넌트를 만들어야한다. 컴포넌트라는 단어에 어렵다 지레 겁먹을 필요없다. 컴포넌트(Component)란 구성요소란 의미로 그저 Frame(창)안을 채워주는 요소들을 말한다. 그렇다면 몇개의 구성요소들의 종류들을 나열해보자.

  • 버튼 (JButton) - 말그대로 그냥 버튼 모양의 컴포넌트
  • 체크박스 (JCheckBox) - 체크할 수 있는 박스 모양의 컴포넌트
  • 라벨 (JLabel) - 라벨이라고 별 다른거 없이 텍스트 컴포넌트
  • 메뉴 (JMenu)
  • 메뉴바 (JMenuBar)
  • 패널 (JPanel) - 프레임을 나누는 기준이 된다. 헷갈리지 않도록 해야하는 점은 패널은 컴포넌트고 패널에 버튼이나 텍스트 필드 등을 삽입할 수 있다. 즉 컴포넌트를 가지는 컴포넌트다.
  • 테이블 (JTable) - 디비나 엑셀처럼 테이블 모양의 컴포넌트
  • 텍스트필드 (JTextField) - 라벨이랑 헷갈리지 말자 텍스트필드는 빈 상자 모양의 컨포넌트로써 값을 입력 받을 수 있고 라벨은 그냥 텍스트 컴포넌트다.
    외울 필요없다. 그저 이런게 있으니 필요할 때마다 찾아보면 된다. 그걸 위해서 이렇게 글로 기록 하는 것이다.

컴포넌트마다 사용법은 모두 비슷하기 때문에 하나만 제대로 이해해도 나머지는 기억이 안나면 언제든지 찾아봐도 되고, 외우기도 편하다. 그럼 바로 예제를 보자.

버튼과 패널 컴포넌트를 사용해본 예제

public UserFrame extends baseFrame{
    // 버튼 컴포넌트 생성
    JButton btn = new JButton("버튼");
    
    // 패널 컴포넌트 생성
    Jpanel pnl = new JPanel();
    
    /*패널에 버튼 추가. 다시 말해서 패널 컴포넌트에 버튼 컴포넌트를 추가했다. 
    패널 객체의 add 메소드는 패널에 다른 컴포넌트를 부착하는 역할을 한다.*/ 
    pnl.add(btn);
    
    /*패널을 Layout의 가운데에 배치했다. Layout을 Frame이라 해도 괜찮다. 
    여기서 add는 메소드다. 바로 JFrame에 정의된 메소드로서 컴포넌트를 부착하는 
    역할을 한다. 아래의 코드는 프레임의 가운데에 패널 컴포넌트를 부착하게된다. 
    JFrame의 상세한 내용은 나중에 정리해볼 예정이니 일단 사용법을 이해해보자.*/
    add(pnl, BorderLayout.CENTER);  
}

프레임 보이기

이대로 실행하면 아무런 창도 안 뜬다. 왜 그런걸까? 버튼 컴포넌트를 패널 컴포넌트에 부착하고 버튼이 부착된 패널을 프레임의 중앙에 부착했다. 프레임에 컴포넌트가 성공적으로 부착되었지만 이 프레임(UserFrame)을 보기위해선 다음과 같은 코드가 필요하다.

public static void main(String[] args) {
	new UserFrame().setVisible(true)
}

우선 new UserFrame()는 UserFrame Class의 객체를 생성한다. 그리고 생성된 객체의 setVisible() 메소드를 실행한다. 이 메소드는 JFrame의 메소드이고 UserFrame은 JFrame을 상속받고 있다. (BaseFrame을 상속하고 있지만 BaseFrame이 JFrame을 상속 받고있기 때문에 UserFrame이 JFrame을 상속한다.)

좋은 웹페이지 즐겨찾기