728x90
728x90
- 1 ~ 45 범위의 랜덤한 정수 6개
코드
# 랜덤 정수 추출 기능 파일
public class LottoRandomNumber {
public int[] lottoNumber() {
// 메서드에서 리턴할 것이므로 멤버변수로 선언하지 않아도 됨
int[] lotto = new int[6];
// 한 곳에서만 사용된다면 지역변수로 선언
Random r = new Random();
for (int i = 0; i < lotto.length; i++) {
// 1 ~ 45 범위의 정수 난수를 생성해서 배열에 넣기
lotto[i] = r.nextInt(45) + 1;
// 중복 제거
for (int j = 0; j < i; j++) {
if (lotto[i] == lotto[j]) {
i--; // 이번 반복을 취소하고 다시 하도록 함
}
}
} // end of for
// 오름차순 정렬
Arrays.sort(lotto);
return lotto;
}
}
# GUI 구현 파일
public class LottoFrame extends JFrame implements ActionListener {
JButton button;
int[] lotto = new int[6];
public LottoFrame() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setTitle("Lotto Game");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("Lotto Start");
}
private void setInitLayout() {
// root 패널의 레이아웃은 기본값인 BorderLayout을 사용함
add(button, BorderLayout.NORTH); // 버튼을 위쪽에 추가
setVisible(true);
}
private void addEventListener() {
// 이벤트 등록
button.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("게임 시작 ~");
LottoRandomNumberBefore lottoRandomNumber = new LottoRandomNumberBefore(); // 객체 생성
lotto = lottoRandomNumber.lottoNumber(); // 번호 생성
// 콘솔에 번호 출력
for (int i = 0; i < lotto.length; i++) {
System.out.println("lotto : " + lotto[i]);
}
repaint();
}
// paint는 직접 호출하지 않아도, 실행의 흐름이 이미 정해져 있어서
// 자동으로 호출이 됨
@Override
public void paint(Graphics g) {
super.paint(g);
// 폰트 설정
Font f = new Font("궁서체", Font.ITALIC, 25);
g.setFont(f);
// 로또 번호가 생성되어 있지 않은 상태이면
if (lotto[0] == 0) {
g.drawString("버튼을 눌러 번호를 확인하세요!", 120, 200);
return; // 아래 코드 실행 X
}
// 로또 번호가 생성된 상태면
int x = 35;
for (int i = 0; i < lotto.length; i++) {
if (i == 0) {
g.drawString(lotto[i] + "", x, 200);
} else {
g.drawString(lotto[i] + "", x += 100, 200);
}
} // end of for
} // end of paint
// 코드 실행
public static void main(String[] args) {
new LottoFrame();
}
}
실행
320x100
반응형
'Java > Swing (GUI)' 카테고리의 다른 글
[Java/Swing] 윤년 계산기 구현 (0) | 2023.02.18 |
---|---|
[Java/Swing] KeyListener - 이미지 움직이기 (0) | 2023.02.18 |
[Java/Swing] MouseListener - 컴포넌트 이동시키기 (0) | 2023.02.18 |
[Java/Swing] ActionListener - 배경 색 변경하기 (1) | 2023.02.18 |
[Java/Swing] 메서드 및 함수 모음 (1) | 2023.02.17 |