package ch08;
import java.awt.BorderLayout;
import java.awt.Color;
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;
import javax.swing.JPanel;
public class LottoFrame extends JFrame implements ActionListener{
JButton button; //맴버변수 초기화시키기
LottoPanel lottoPanel;
LottoNumber lottoNumber;
//변수 선언, 초기화
int[] lotto = new int[LottoNumber.LOTTO_NUMBER_SIZE];
//LottoNumber 가 대문자 이기때문에 호출을 할수있는 것도 스태틱만 가능한데
//LOTTO_NUMBER_SIZE 가 스태틱으로 바꾸어 놓아서 호출이 가능
public LottoFrame() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setTitle("로또 번호 생성기");
setSize(600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
button = new JButton("++로또 번호 생성하기++");
lottoPanel = new LottoPanel(); //메모리 올리기
lottoNumber = new LottoNumber();
}
private void setInitLayout() {
setVisible(true);
setBackground(Color.gray);
add(button, BorderLayout.NORTH);
add(lottoPanel, BorderLayout.CENTER);
}
private void addEventListener() {
button.addActionListener(this); //addActionListener를 임플리먼트해서 this 사용가능
}
@Override
public void actionPerformed(ActionEvent e) {
lotto = lottoNumber.getLottoNumber();
repaint();
}
private class LottoPanel extends JPanel {
@Override
public void paint(Graphics g) {
Font font = new Font("궁서체", Font.BOLD,20);
g.setFont(font);
if(lotto[0] == 0) {
g.drawString("로또 버튼을 클릭하세요", 180,180 );
return;
}
int xPosition = 150;
for (int i = 0; i < lotto.length; i++) {
g.drawString(lotto[i]+ "", xPosition, 150);
xPosition += 50;
}
}
}
//테스트 코드
// public static void main(String[] args) {
// new LottoFrame();
// }
}
package ch08;
import java.util.Arrays;
import java.util.Random;
public class LottoNumber {
static final int LOTTO_NUMBER_SIZE= 6;
//힙에 미리 올라간 static(태양)이기때문에 클래스가 다르더라도 사용을 할수있다.
//number print 참고
public int[] getLottoNumber() {
//번호를 담을 공간 만들기
int[] numbers = new int[LOTTO_NUMBER_SIZE];
Random random = new Random();
for (int i = 0; i < numbers.length; i++) {
int selectedNumber = random.nextInt(45) + 1;
numbers[i] = selectedNumber;
for(int j= 0; j<i; j++) {
if(numbers[i] == numbers[j]) {
i= i-1;
break;
}
}
}
//배열 정렬
Arrays.sort(numbers);
return numbers;
}
//테스트코드
// public static void main(String[] args) {
// int[] nums = LottoNumber.getLottoNumber();
//
// for (int i : nums ) {
// System.out.println( " i :" +i);
// }
// }
}
package ch08;
public class RunLottoGame {
public static void main(String[] args) {
new LottoFrame();
}
}
'Java > Excercise' 카테고리의 다른 글
javaio ch01 SysteminTest (0) | 2021.09.13 |
---|---|
swing ch09 Play1945 (0) | 2021.09.10 |
swing ch07 MainTest lotto (0) | 2021.09.10 |
callback ch05 Phonebook (0) | 2021.09.10 |
callback ch04 News (0) | 2021.09.09 |