1. 로또 생성기 클래스 만들기
package ch07;
import java.util.Arrays;
import java.util.Random;
// 클래스 --> 단일 책임 원칙을 설정하는 것이 좋다
public class LottoRandomNumber {
final int LOTTO_NUMBER_COUNT = 6;
// 6개의 랜덤 번호를 생성하는 메서드 필요하다.
public int[] createNumber() {
int[] lottoWinNum = new int[LOTTO_NUMBER_COUNT];
Random random = new Random();
for (int i = 0; i < lottoWinNum.length; i++) {
lottoWinNum[i] = random.nextInt(45) + 1;
// 중복 방지 코드
for (int j = 0; j < i; j++) {
if (lottoWinNum[i] == lottoWinNum[j]) {
i--;
}
}
// 중복 제거 완료
}
// 오름차순 정렬 코드
Arrays.sort(lottoWinNum);
return lottoWinNum;
}
// 코드 테스트
public static void main(String[] args) {
LottoRandomNumber randomNumber = new LottoRandomNumber();
int[] resultArray = randomNumber.createNumber();
for (int i = 0; i < resultArray.length; i++) {
System.out.print(resultArray[i] + " ");
}
}
}
package ch07;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class LottoFrame extends JFrame implements ActionListener {
private JButton button;
private LottoRandomNumber lottoRandomNumber;
private boolean isStart = true;
private int NUBER_DISTANCE = 80;
public LottoFrame() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setTitle("Lotto Game");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("Game start");
lottoRandomNumber = new LottoRandomNumber();
}
private void setInitLayout() {
add(button, BorderLayout.NORTH);
setVisible(true);
}
private void addEventListener() {
button.addActionListener(this);
}
// 코드 테스트
public static void main(String[] args) {
new LottoFrame();
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("그림을 그려라!");
isStart = false;
// 이벤트가 일어나면 그림을 (다시) 그려라
repaint(); // 다시 그림을 그려라 요청하는 명령어 == F5
}
@Override
public void paint(Graphics g) {
super.paint(g);
Font f = new Font("궁서체", Font.BOLD, 30);
g.setFont(f);
if (isStart) {
g.drawString("Game Start를 클릭하세요", 150, 200);
} else {
int[] getNumbers = lottoRandomNumber.createNumber();
for (int i = 0; i < getNumbers.length; i++) {
g.drawString(getNumbers[i] + " ", 80 + i * NUBER_DISTANCE, 200);
}
}
}
}
'Java > Swing 프로젝트' 카테고리의 다른 글
Bubble (객체 지향 패러다임) - 1 (0) | 2024.05.02 |
---|---|
Swing 스레드 활용 - 8 (0) | 2024.05.01 |
Swing Key Listener - 6 (0) | 2024.04.30 |
Swing 이벤트 리스너 - 5 (0) | 2024.04.29 |
Swing image 위에 image - 4 (0) | 2024.04.29 |