JAVA
JAVA Swing JPanel과 JLabel합치기 및 플레이어 생성
박도치
2023. 6. 13. 18:52
public class BubbleFrame extends JFrame{
private JLabel backgroundMap;
private Player player;
public BubbleFrame() {
initObject();
initSetting();
setVisible(true);
}
private void initObject() {
backgroundMap = new JLabel(new ImageIcon("image/backgroundMap.png")); //이미지를 가져옴
// JPanel과 JLabel을 합쳐준다(굳이 따로 쓸 필요가 없기 때문이다.)
setContentPane(backgroundMap);
player = new Player();
add(player);
}
private void initSetting() {
setSize(1000, 640);
setLayout(null); // absolute 레이아웃(자유롭게 그림그리는것이 가능)
setLocationRelativeTo(null); // JFrame이 가운데 뜸
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // x버튼으로 창을 껐을 때, JVM 같이 종료하기
}
public static void main(String[] args) {
new BubbleFrame();
}
}
JPanel 아래 JLabel이라는 도화지에 그림을 그리게 되는데, 이 따로 사용할 필요가 없기 때문에 같이 합쳐 사용해주도록 하자.
setContentPane(JLabel) 이런식으로 둘을 합쳐서 배경을 만들어주도록 하자
메인클래스
public class BubbleFrame extends JFrame{
private JLabel backgroundMap;
public BubbleFrame() {
initObject();
initSetting();
setVisible(true);
}
private void initObject() {
backgroundMap = new JLabel(new ImageIcon("image/backgroundMap.png")); //이미지를 가져옴
// JPanel과 JLabel을 합쳐준다(굳이 따로 쓸 필요가 없기 때문이다.)
setContentPane(backgroundMap);
}
private void initSetting() {
setSize(1000, 640);
setLayout(null); // absolute 레이아웃(자유롭게 그림그리는것이 가능)
setLocationRelativeTo(null); // JFrame이 가운데 뜸
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // x버튼으로 창을 껐을 때, JVM 같이 종료하기
}
public static void main(String[] args) {
new BubbleFrame();
}
}
new ImageIcon의 경우 내가 필요한 배경이미지를 미리 폴더를 통해 만들어놓고, 이를 불러와서 배경으로 설정한 것이다.
아래 image폴더 내에 backgroundMap.png라는 배경이미지를 받아놨는데 이를 가져와 JLabel에 그리고, setContentPane에 담아 둘을 합친 것이다.
이제 플레이어를 생성해줄 차례다
Player 클래스
//플레이어 클래스
public class Player extends JLabel{
private int x;
private int y;
private ImageIcon playerR, playerL; //플레이어의 오른쪽 면, 왼쪽 면
public Player() {
initObject();
initSetting();
}
private void initObject() {
playerR = new ImageIcon("image/playerR.png");
playerL = new ImageIcon("image/playerL.png");
}
private void initSetting() {
x = 55;
y = 535;
// this.setIcon(playerR);
setIcon(playerR);
setSize(50, 50);
setLocation(x, y);
}
}
x,y는 좌표이다. 이미지 아이콘에 왼쪽을 보는 이미지와 오른쪽을 보는 이미지가 필요하기 때문에 PlayerR 과 PlayerL 로 구분했으며 기본위치는 initSetting에 담아놨다.
player클래스를 생성했으면 다시 mainFrame으로가서 player를 넣어주도록 하자
최종 메인 Frame 클래스
public class BubbleFrame extends JFrame{
private JLabel backgroundMap;
private Player player;
public BubbleFrame() {
initObject();
initSetting();
setVisible(true);
}
private void initObject() {
backgroundMap = new JLabel(new ImageIcon("image/backgroundMap.png")); //이미지를 가져옴
// JPanel과 JLabel을 합쳐준다(굳이 따로 쓸 필요가 없기 때문이다.)
setContentPane(backgroundMap);
player = new Player();
add(player);
// backgroundMap.setLocation(300,300);
// backgroundMap.setSize(1000, 600); //가져온 이미지의 사이즈
// add(backgroundMap); //JFrame에 JLabel이 그려진다.
}
private void initSetting() {
setSize(1000, 640);
setLayout(null); // absolute 레이아웃(자유롭게 그림그리는것이 가능)
setLocationRelativeTo(null); // JFrame이 가운데 뜸
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // x버튼으로 창을 껐을 때, JVM 같이 종료하기
}
public static void main(String[] args) {
new BubbleFrame();
}
}
실행해보면 아래와 같이 나온다.
이미지 : 깃허브에서 코드 다운로드 후 image파일 사용하면 된다.