JFrame은 ContentPane과 MenuBar로 구성되어있다. 그리고 하나의 계층적 구조(Hierarchy)구조로 하나씩 붙여서 디자인을 완성하게 된다.
따라서 어떤 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);
'프로그래밍 일반 > JAVA' 카테고리의 다른 글
[JAVA] IF문 다르게 보기 (0) | 2020.02.22 |
---|---|
[JAVA] GUI에서 Component 활용하기 2 - 기능입히기 (0) | 2020.02.16 |
[JAVA] GUI Jbutton API문서 읽기 (0) | 2020.02.14 |
[JAVA] GUI- JFrame을 만들기 (0) | 2020.02.13 |
[JAVA] GUI - Jframe API문서 읽기 (0) | 2020.02.13 |