티스토리 뷰

Java Swing 기초

1강 Frame 과 panel

플레지 2019. 5. 7. 23:28

Frame

GUI 환경에서 사용자에게 화면을 보이게 해주어야 한다.  이때 사용하는 게  frame.setVisible(true); 이다.

setVisible의 기본 디폴트 값은 false 이므로 frame.setVisible(true); 로 해주었다. 

true 로 해주지 않으면 보이지 않는다. 다음으로 컴퓨터마다 보이는 화면이 다르므로 화면의 비율을 설정해 주는 클래스가 Dimesion이다.

일반적으로 사용하는 디스플에이 비율이 4 : 3 이므로  frame.setPreferredSize(new Dimension( 840 , 840/12*9)); 으로 해주었다

frame.setPreferredSize는 화면 크기가 어떻든 간에 최대한 4 : 3 비율에 가깝도록 화면을 만들어 준다.

다음으로 화면을 출력해주려면 화면의 크기를 지정해 주어야 한다.

이때  frame.setSize(840840/12*9); 라는 클래스를 사용한다.  frame.setSize( Width ,  Height );  원하는 크기로Width와  Height를 세팅해준다. 

화면을 실행을 하고나서 화면을 닫았음에도 불구하고 데몬으로 인해서 백그라운드에서는 지속적으로 프로그램이 계속 돌아가고 있다.

만약 화면을 닫았으면 프로그램도 같이 종료될 수 있도록 하기 위해서는frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 클래스를 사용해 주어야 한다.

프로그램 화면이 닫히면 동시에 프로그램 도 같이 종료되도록 해준다.  다음으로 화면을 재생했을 때 처음에 나오는 화면의 위치는 왼쪽 위 일 것이다.

이때 화면이 가운데에서 출력되도록 하려면 frame.setLocationRelativeTo(null); 클래스를 사용해 주어야 한다. 어떤 위치에서 GUI를 출력해줄 것인가 인데 null로 해주면 가운데에서 출력을 해준다.

frame을 생성했을 때 화면 크기를 사용자가 조절할 수 있도록 하거나 못하게 하거나 설정할 수 있다. 

frame.setResizable(false); true로 하면 화면 크기를 조절할 수 있다. 그러나 false로 설정하면 마음대로 화면의 크기를 조절할 수 없게 된다.

위에서 배운 것을 정리해보자

  • frame.setVisible(true);
  • frame.setPreferredSize(new Dimension( 840 , 840/12*9));
  • frame.setSize( Width ,  Height ); 
  • frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  • frame.setLocationRelativeTo(null);
  • frame.setResizable(Boolean);

이것으로 가장 기초 기본적인 Frame 생성 방법을 정리해보았다.

panel

 frame 은 화면을 생성하는 기본적인 tool이라면 panel 은 그 화면 사이사이에 여러 가지를 넣을 수 있도록해준다.

어떤 섹터에는 이런 기능을 다른 섹터에는 저런 기능을 또는 어떠한 값을 쉽게 넣을 수 있도록해주고 쉽게 닫을 수 있게 해 준다. frame과 비슷하지만 frame 안에서 또 frame을 만들어 주는 그런 역할을 하는 게 panel이다. 

JPanel panel =new JPanel(); 을 사용하여 frame 안에서 여러 가지 frame을  사용할 수 있도록 해준다.

panel을 생성했다고 해서 자동으로 frame 안으로 들어 가는 것이 아니다. add 를 이용해서 frame안에 panel 을 직접 넣어주어야 한다.   eg) frame.add(panel); 

예를 들어서 panel에 문자열을 넣어 보겠다.   panel.add(new JLabel("Welcome to the RealWorld"));                       분명 panel 안에 문자열을 넣어 주었지만 panel을 다시 frame에 넣어 줌으로써 화면에 잘 출력되고 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import javax.swing.*;
import java.awt.event.*;
 
public class Main {
  public static void main(String[] args) {
        JFrame frame =new JFrame();
 
        JPanel panel = new JPanel(); 
 
        panel.add(new JLabel("Welcome to the RealWorld"));
 
 
 
        frame.add(panel);
 
 
 
        frame.setResizable(false);
        frame.setVisible(true);
        frame.setPreferredSize(new Dimension( 840 , 840/12*9));
        frame.setSize(840840/12*9);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
  }
}
 

 

 

 

 

 

 

 

repl.it 환경을 이용하였습니다.

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함