본문 바로가기

[JAVA][SWING]Frame In Frame

반응형

 

 

완전 훌륭한 소스가 있어서 퍼왔다

일명 Frame 안에 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
public class ExJInternalFrame extends JFrame {
    JDesktopPane xDesktop; // JDesktopPane을 정의한다.
    ToolListener xToolListener = new ToolListener();
 
    public ExJInternalFrame(String title) {
        super(title);
        /* 프레임을 닫으면 프로그램을 종료시키도록 설정한다. */
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        /* 내용 패널을 BorderLayot으로 정한다. */
        Container cp = getContentPane();
        cp.setLayout(new BorderLayout());
        /* 툴바를 만든다 */
        JPanel tool_bar = new JPanel(new BorderLayout());
        JPanel tool_pnl = new JPanel(new GridLayout(10));
        JButton btn;
        btn = new JButton("Maximize");
        btn.addActionListener(xToolListener); // 액션 이벤트..
        tool_pnl.add(btn);
        btn = new JButton("Minimize");
        btn.addActionListener(xToolListener);
        tool_pnl.add(btn);
        btn = new JButton("Iconify");
        btn.addActionListener(xToolListener);
        tool_pnl.add(btn);
        btn = new JButton("Close");
        btn.addActionListener(xToolListener);
        tool_pnl.add(btn);
        tool_bar.add(tool_pnl, BorderLayout.WEST);
        cp.add(tool_bar, BorderLayout.NORTH);
        /* 데스크탑 패널을 만든다. */
        xDesktop = new JDesktopPane();
        cp.add(xDesktop, BorderLayout.CENTER);
        /* 기본 설정의 내부 프레임을 만든다. */
        JInternalFrame fr = new JInternalFrame("Internal Frame 1");
        fr.getContentPane().add(new JLabel(new ImageIcon("/root/Download/ICON/jeehaa1004_10.gif")),
                BorderLayout.CENTER);
        fr.setBounds(2020200100);
        fr.setVisible(true);
        xDesktop.add(fr);
        /* 모든 옵션이 켜져있는 내부 프레임을 만든다. */
        fr = new JInternalFrame("Internal Frame 2"truetruetruetrue);
        fr.getContentPane().add(new JLabel(new ImageIcon("/root/Download/ICON/jeehaa1004_6.gif")), BorderLayout.CENTER);
        fr.setBounds(100100200100);
        fr.setVisible(true);
        xDesktop.add(fr);
    }
 
    class ToolListener implements ActionListener {
        public void actionPerformed(ActionEvent ev) {
            String cmd = ev.getActionCommand();
            JInternalFrame fr = xDesktop.getSelectedFrame(); // 선택된 프레임을 가져온다.
            /* 버튼에 따라 최대화, 최소화, 닫기 등의 작업을 한다. */
            try {
                if (cmd.equals("Maximize")) {
                    fr.setMaximum(true); // 최대화 복원
                } else if (cmd.equals("Minimize")) {
                    fr.setMaximum(false); // 최대화 취소
                } else if (cmd.equals("Iconify")) {
                    fr.setIcon(true); // 내부프레임의 아이콘화 유무
                } else if (cmd.equals("Close")) {
                    fr.setClosed(true); // 내부프레임 닫기
                }
            } catch (Exception e) {
            }
        }
    }
 
    public static void main(String args[]) {
        /* 프레임을 만든다. */
        ExJInternalFrame mf = new ExJInternalFrame("JInternalFrame 예제");
        mf.setSize(400300);
        mf.setVisible(true);
    }
}
cs

 

 

ExJInternalFrame 라는 이름으로 JAVA 파일 하나 만들어두고 복붙한 후 실행시키면 잘 돌아갈 것이다

 

출처 : JAVA 프레임 안에 프레임

 

반응형