본문 바로가기

프로그래밍 일반/JAVA

[JAVA] JAVA GUI Component사용하기 - 1 디자인 입히기

JFrame은 ContentPane과 MenuBar로 구성되어있다. 그리고 하나의 계층적 구조(Hierarchy)구조로 하나씩 붙여서 디자인을 완성하게 된다.

 

 

출처 : https://m.blog.naver.com/PostView.nhn?blogId=highkrs&logNo=220575148557&proxyReferer=https%3A%2F%2Fwww.google.com%2F

따라서 어떤 JFrame위에 Label(그림, 글)을 붙이고 싶다면, 아래와 같이 frame.add( );로 아래에 붙이는 구조로 들어간다.

 

    public static void main(String[] args) {
        JFrame frame = new JFrame("테스트모드");
        ImageIcon image_i = new ImageIcon("images\\whale.jpg");
        JLabel jlabel = new JLabel(image_i);



		frame.add(jlabel);



        frame.setDefaultCloseOperation
               (JFrame.EXIT_ON_CLOSE);
 		frame.pack();        
        frame.setVisible(true);  

    }

 

 그런데 이 whale사진위에 버튼을 올리고 싶어서 아래와 같이 코드를 작성하면 고래 이미지는 보이지 않고, 박스 이미지만 보이게 된다. 이는 처음에 고래사진을 올렸다가, 버튼으로 대체한 것이기 때문이다.

 

    public static void main(String[] args) {

        JFrame frame = new JFrame("홀랄라");

        ImageIcon image_i = new ImageIcon("images\\whale.jpg");

        JLabel jlabel = new JLabel(image_i);

        ImageIcon image_button = new ImageIcon("images\\box.png");
        JButton jbutton = new JButton(image_button);


        frame.add(jlabel);
        frame.add(jbutton);


        //jlabel.add(drawpanel);
        frame.setDefaultCloseOperation
               (JFrame.EXIT_ON_CLOSE);
        //frame.pack();
        frame.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
        
        frame.setVisible(true);  

    }

 

따라서 jbutton을 jlabel위에다 올려두고, jlabel을 frame위에 붙여두는 방식으로 처리하면 된다.

        ImageIcon image_button = new ImageIcon("images\\box.png");
        JButton jbutton = new JButton(image_button);

        jbutton.setBounds(200, 200, 200, 200);

        jlabel.add(jbutton);
        frame.add(jlabel);