본문 바로가기

프로그래밍 일반/JAVA

[JAVA] GUI- JFrame을 만들기

Java의 홈페이지에 JFrame튜토리얼을 번역하였습니다.

주소 : (https://docs.oracle.com/javase/8/docs/api/index.html?javax/swing/package-summary.html)

 

//1. Create the frame.
JFrame frame = new JFrame("FrameDemo");

//2. Optional: What happens when the frame closes?
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//3. Create components and put them in the frame.
//...create emptyLabel...
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

//4. Size the frame.
frame.pack();

//5. Show it.
frame.setVisible(true);

 

1. JFrame을 생성했을 때, 생성자 매개변수("FrameDemo")는 Title을 설정해줍니다. 아래와 같이 창의 제목을 설정해줄 수 있습니다.

2. JFrame의 꺼짐 (X버튼)을 눌렀을 때 어떻게 설정할지 알려줍니다. 기본적으로 X창을 누르면 꺼지게 만들었는데 프레임 닫기를 했을 때 꺼지는게 정상이기 때문입니다.

3. frame.getContentPane().add(emptyLabel, BorderLayout.CENTER); 은 frame에 component를 추가하는 것을 설명해줍니다. 여기서 add( );는 Container에서 상속받은 메소드이며, emptyLabel은 Component를 추가하는 것을 의미하고, BorderLayout.Center은 어디에 위치할 것인가를 명시합니다.

여기서 JLabel을 Component로 추가했습니다. JLabel은 문자열이나 이미지를 표시해주는 영역입니다. 라벨이기 때문에 키보드에 반응하지 않는데, 대신 근처에 있는 키보드에 반응하는 component를 표시할 수 있습니다.

        // 3. Create components and put them in the frame.
        // ...create emptyLabel...
        ImageIcon icon = new ImageIcon("images\\whale.jpg");
        JLabel emptyLabel = new JLabel(icon);
        frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

4. pack 메소드는 프레임을 컴포넌트에 맞춰서 조정해줍니다. pack대신에 setSize나 setBounds를 통해 사이즈를 구현할 수 있습니다. pack이 layout을 담당하기 때문에 더 선호됩니다. 해당 프레임의 위치 자체를 옮기기 위해서는 setLocation을 쓸 수 있습니다.

 

5. setVisible(true)는 프레임을 스크린에 보이게 도와줍니다.

 

 

프레임에 상단 바에 이미지 아이콘을 세팅할 수 있습니다. setDefaultLookAndFeelDecorated(true)를 생성 JFrame객체 선언전에 설정해야 해당 효과가 적용됩니다.

//Ask for window decorations provided by the look and feel.
JFrame.setDefaultLookAndFeelDecorated(true);

//Create the frame.
JFrame frame = new JFrame("A window");

//Set the frame icon to an image loaded from a file.
frame.setIconImage(new ImageIcon(imgURL).getImage());