포토샵을 사용해서 메뉴바를 해상도에 맞게 만들어줍니다.
메뉴바에 종료버튼을 위치하고 종료기능을 구현합니다.
메뉴바를 클릭하여 이동시킬 수 있는 드래그 기능을 구현합니다.
버튼 클릭시 버튼효과음을 적용합니다.
public class DynamicBeat extends JFrame {
private Image screenImage;
private Graphics screenGraphic;
private ImageIcon exitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/exitButtonEntered.png")); // Entered 변수
private ImageIcon exitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/exitButtonBasic.png")); // Basic 변수
private Image introBackground = new ImageIcon(Main.class.getResource("../images/introBackground(Title).jpg")).getImage();
private JLabel menuBar = new JLabel(new ImageIcon(Main.class.getResource("../images/menuBar.png")));
// 메뉴바 객체안에 메뉴바이미지 생성
private JButton exitButton = new JButton(exitButtonBasicImage);
// 종료버튼이미지 생성
private int mouseX, mouseY; // 프로그램 안에서 마우스 좌표
public DynamicBeat() {
setUndecorated(true); // 운영체제 메뉴바 삭제
setTitle("Dynamic Beat");
setSize(Main.SCREEN_WHIDTH, Main.SCREEN_HEIGHT);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBackground(new Color(0, 0, 0, 0)); //
setLayout(null);
exitButton.setBounds(1245, 0, 30, 30); // JButton 커스텀 설정
exitButton.setBorderPainted(false); // 기본버튼테두리 삭제
exitButton.setContentAreaFilled(false); // 기본버튼내용 삭제
exitButton.setFocusPainted(false); // 기본포커스 삭제
exitButton.addMouseListener(new MouseAdapter() {
// 마우스가 이미지에 올라왔을때 이벤트설정
@Override
public void mouseEntered(MouseEvent e) {
exitButton.setIcon(exitButtonEnteredImage);// 버튼이미지 변경
exitButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
// 마우스 모양 변경
Music buttinEnteredMusic = new Music("buttonEnteredMusic.mp3", false); // 버튼 효과음 적용
buttinEnteredMusic.start();
}
@Override
public void mouseExited(MouseEvent e) {
exitButton.setIcon(exitButtonBasicImage); // 버튼이미지 복구
exitButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
// 마우스 모양 복구
}
@Override
public void mousePressed(MouseEvent e) {
Music buttinEnteredMusic = new Music("buttonPressedMusic.mp3", false); // 버튼 효과음 적용
buttinEnteredMusic.start();
try {
Thread.sleep(1000); // 효과음 1초 이후에 쓰레드 종료
} catch(InterruptedException ex) {
ex.printStackTrace();
}
System.exit(0);
}
});
add(exitButton);
Music introMusic = new Music("introMusic.mp3", true);
introMusic.start();
}
public void paint(Graphics g) {
screenImage = createImage(Main.SCREEN_WHIDTH, Main.SCREEN_HEIGHT);
screenGraphic = screenImage.getGraphics();
screenDraw(screenGraphic);
g.drawImage(screenImage, 0, 0, null);
}
public void screenDraw(Graphics g) {
g.drawImage(introBackground, 0, 0, null);
paintComponents(g); // 화면에 고정된 이미지를 출력하기 위해 사용
this.repaint();
}
}
DynamicBeat클래스
'개인프로젝트 > 리듬게임만들기' 카테고리의 다른 글
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 6.곡 선택 화면 디자인 (1) | 2024.02.06 |
---|---|
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 5. 화면전환 (0) | 2024.02.06 |
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 3. 시작화면에 음악 삽입 (0) | 2024.02.05 |
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 2.게임 시작화면 개발하기 (0) | 2024.02.03 |
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 1.자바 개발환경 세팅 과 GUI 시작하기 (0) | 2024.02.02 |