국비 12일차_1

강지수·2023년 12월 28일
0

국비교육

목록 보기
22/97

지난 시간 복습


버튼을 누르면 text -> 이미지 로 바뀌게 된다.


버튼을 눌러 text - 이미지 - text - 이미지 로 변환


여담 ; flag

옛날 기차역에서 기차가 들어오면 차장이 깃발로 신호를 주었다.
위로 올리면 왼쪽, 내리면 오른쪽 등등
-> flag = 신호를 주는 역할로 많이 쓰게 되었따.



package com.tech.gt001;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class CheckBoxAnimalEx extends JPanel implements ItemListener{
//	구성요소
	private JCheckBox[] buttons=new JCheckBox[3];
	private String[] animals={"lion","monkey","tiger"};
	private JLabel[] labels=new JLabel[3];
	private ImageIcon[] icon=new ImageIcon[3];
	
	public CheckBoxAnimalEx() {
		super(new GridLayout(0,4));
		for (int i = 0; i < animals.length; i++) {
			buttons[i]=new JCheckBox(animals[i]);
			buttons[i].addItemListener(this);
			buttons[i].setBackground(Color.cyan);
			labels[i]=new JLabel(animals[i]+".PNG");
			icon[i]=new ImageIcon(animals[i]+".PNG");
		}
		JPanel checkpanel=new JPanel(new GridLayout(0,1));
		for (int i = 0; i < animals.length; i++) {
			checkpanel.add(buttons[i]);
		}
		add(checkpanel);
		add(labels[0]);
		add(labels[1]);
		add(labels[2]);
	}
	@Override
	public void itemStateChanged(ItemEvent e) {
		System.out.println("check 수신");
		
		Object source=e.getItemSelectable();
		System.out.println(source);
		
		for (int i = 0; i < buttons.length; i++) {
			if(source==buttons[i]) {
				if(e.getStateChange()==ItemEvent.DESELECTED) {
					labels[i].setIcon(null);					
				}else {
					labels[i].setIcon(icon[i]);					
				}
			}
		}
	}
	public static void main(String[] args) {
		JFrame frame=new JFrame("CheckBox");
		CheckBoxAnimalEx panel=new CheckBoxAnimalEx();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(500,200);
		
		frame.add(panel);
		
		frame.setVisible(true);
	}
}

결과

체크박스를 체크하면 그림이 나오고, 해제하면 그림이 안나온다.


동물 대신 과일로 해보세요

package com.tech.gt001;

import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;

public class CheckBoxFruitsEx extends JPanel implements ItemListener {
	private JCheckBox[] buttons=new JCheckBox[3];
	private String[] fruits= {"apple","grape","orange"};
	private JLabel[] labels=new JLabel[3];
	private ImageIcon[] icon=new ImageIcon[3];
	
	public CheckBoxFruitsEx() {
		super(new GridLayout(0,4));
		for (int i = 0; i < fruits.length; i++) {
			buttons[i]=new JCheckBox(fruits[i]);
			buttons[i].addItemListener(this);
			buttons[i].setBackground(Color.YELLOW);
			labels[i]=new JLabel(fruits[i]+".gif");
			icon[i]=new ImageIcon(fruits[i]+".gif");
		}
		JPanel checkpanel=new JPanel(new GridLayout(0,1));
		for (int i = 0; i < fruits.length; i++) {
			checkpanel.add(buttons[i]);
		}
		add(checkpanel);
		add(labels[0]);
		add(labels[1]);
		add(labels[2]);
	}	
	@Override
	public void itemStateChanged(ItemEvent e) {
		System.out.println("Checkbox 클릭");
		
		Object source=e.getItemSelectable();
		System.out.println(source);
		
		for (int i = 0; i < buttons.length; i++) {
			if(source==buttons[i]) {
				if(e.getStateChange()==ItemEvent.DESELECTED) {
					labels[i].setIcon(null);
				}else {
					labels[i].setIcon(icon[i]);
				}
			}
		}
	}
	public static void main(String[] args) {
		JFrame frame=new JFrame("Fruits CheckBox");
		CheckBoxFruitsEx panel=new CheckBoxFruitsEx();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(500,200);
		frame.add(panel);
		frame.setVisible(true);
	}
}

결과

일단은 이해보다는 따라 쓰면서 각 줄의 기능정도만 따라가는중..


슬롯머신 만들기

package com.tech.gt001;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.plaf.FontUIResource;

class MyCounter2 extends JFrame implements ActionListener{
	private JLabel[] labels;
	private JButton buttons;
	private int[] numbers;
	
	public MyCounter2() {
//		프레임 초기화 (화면 구성)
		setTitle("Slot Machine");
		setSize(500,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel=new JPanel();
		panel.setLayout(null);
		labels=new JLabel[3];
		numbers=new int[3];
		
		for (int i = 0; i < labels.length; i++) {
			labels[i]=new JLabel(""+numbers[i]);
			labels[i].setSize(100,100);
			labels[i].setLocation(100+100*i,20);
			labels[i].setFont(new FontUIResource("Impact",Font.BOLD,100));
			panel.add(labels[i]);
		}
		buttons=new JButton("머신땡겨");
		buttons.setSize(250,50);
		buttons.setLocation(100,150);
		buttons.addActionListener(this);
		panel.add(buttons);
		
		add(panel);
		setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("신호호호호");
		for (int i = 0; i < labels.length; i++) {
//		랜덤으로 number 값 받아오기(0~9)
			numbers[i]=(int)(Math.random()*10);
			labels[i].setText(""+numbers[i]);
		}
//		번호 3개가 동일하면 buttons 의 text를 축하축하 로 변경
		if(numbers[0]==numbers[1]&&numbers[1]==numbers[2]) {
			buttons.setText("축하축하");
		} else buttons.setText("머신땡겨");
	}
}
public class SlotMachine2 {
	public static void main(String[] args) {
		new MyCounter2();
	}
}

결과


슬롯머신의 숫자를 이미지로 처리하세요

강사님의 코드

package com.tech.gt001;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.plaf.FontUIResource;

class MyCounter4 extends JFrame implements ActionListener{
	private JLabel[] labels;
	private JButton buttons;
	private int[] numbers;
//		이미지 그릇
	private ImageIcon[] imgs;
	
	public MyCounter4() {
//		프레임 초기화 (화면 구성)
		setTitle("Slot Machine");
		setSize(500,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel=new JPanel();
		panel.setLayout(null);
		labels=new JLabel[3];
		numbers=new int[3];
//		이미지 저장 배열 객체 생성
		imgs=new ImageIcon[10];
//		배열에 각각 이미지 배치
		for (int i = 0; i < imgs.length; i++) {
			imgs[i]=new ImageIcon(i+".png");
		}
		for (int i = 0; i < labels.length; i++) {
			labels[i]=new JLabel(""+numbers[i]);
			labels[i].setSize(100,100);
			labels[i].setLocation(100+100*i,20);
			labels[i].setFont(new FontUIResource("Impact",Font.BOLD,100));
			labels[i].setIcon(imgs[0]);
			panel.add(labels[i]);
		}
		buttons=new JButton("머신땡겨");
		buttons.setSize(250,50);
		buttons.setLocation(100,150);
		buttons.addActionListener(this);
		panel.add(buttons);
		
		add(panel);
		setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("신호호호호");
		for (int i = 0; i < labels.length; i++) {
//		랜덤으로 number 값 받아오기(0~9)
			numbers[i]=(int)(Math.random()*10);
			labels[i].setIcon(imgs[numbers[i]]);
		}
//		번호 3개가 동일하면 buttons 의 text를 축하축하 로 변경
		if(numbers[0]==numbers[1]&&numbers[1]==numbers[2]) {
			buttons.setText("축하축하");
		} else buttons.setText("머신땡겨");
	}
}
public class SlotMachine4 {
	public static void main(String[] args) {
		new MyCounter4();
	}
}

결과

profile
개발자 준비의 준비준비중..

0개의 댓글