# 최상위 컨데이너
JFrame, JDialog, JApplet 등이 최상위 컨테이너이며, 프로그램 창(윈도우)이라고도 이해할 수 있다.
최상위 컨테이너는 시각적 컴포넌트를 위한 영역인 content pane을 가지고 있다.

## JFrame

* `getDefaultCloseOperation()` / `setDefaultCloseOperation(int)` : DO_NOTHING_ON_CLOSE | HIDE_ON_CLOSE | DISPOSE_ON_CLOSE | EXIT_ON_CLOSE
* `getIconImage()` / `setIconImage(java.awt.Image)`
* `getTitle()` / `setTitle(String)`
* `isUndecorated()` / `setUndecorated(boolean)`
* `isDefaultLookAndFeelDecorated()` / `setDefaultLookAndFeelDecorated(boolean)`

* `getSize()` / `setSize(int,int)` / `setSize(Dimension)`
* `getBounds()` / `setBounds(int,int,int,int)` / `setBounds(Rectangle)` : x, y, width, height
* `getLocation()` / `setLocation(int,int)` / `setLocationRelativeTo(Component)`
* `pack()`

* `getContentPane()` / `setContentPnae(Container)`
* `getRootPane()` / `setRootPane(JRootPane)` / `createRootPane()`
* `getJMenuBar()` / `setJMenuBar(JMenuBar)`
* `getGlassPane()` / `setGlassPane(Component)`
* `getLayeredPane()` / `setLayeredPane(JLayeredPane)`


```java
public static void main(String... args) {
    // 컨텐트 패널에 버튼 등의 컴포넌트를 구성한다.
    final JPanel contentPane = new JPanel();
    contentPane.setBackground(Color.PINK);

    // 프레임을 생성한다.
    final JFrame jFrame = new JFrame();
    jFrame.setTitle("Example");
    jFrame.setSize(800, 600);
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.setContentPane(contentPane);

    // 이벤트 디스패치 스레드에서 프레임을 표시한다.
    SwingUtilities.invokeLater(() -> {
        jFrame.setVisible(true);
    });
}
```

## JDialog



## Full-screen Exclusive mode

```java
if(graphicsDevice.isFullScreenSupported()){
    graphicsDevice.setFullScreenWindow(jFrame);
	// graphicsDevice.setFullScreenWindow(null); //null to exit
}
```
### DisplayMode
