국비 13일차_2

강지수·2024년 1월 2일
0

국비교육

목록 보기
25/97

slider 활용

package com.tech.gt003;

import java.awt.Component;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderEx extends JFrame implements ChangeListener{
//	jslider 사용
	private JButton buttonOk;
	private JSlider slider;
	private JButton button;
	static final int INIT_VALUE=15;
	
	public SliderEx() {
		setTitle("슬라이더");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300,300);
		
		JPanel panel=new JPanel();
		JLabel label=new JLabel("슬라이더를 끌어보세요");
		label.setAlignmentX(Component.CENTER_ALIGNMENT);
		panel.add(label);
		
		slider=new JSlider(0, 30, INIT_VALUE);
		slider.setMajorTickSpacing(10);
		slider.setMinorTickSpacing(1);
		slider.setPaintTicks(true);
		slider.setPaintLabels(true);
		slider.addChangeListener(this); // 변화를 줄 때마다 이벤트 발생 수신자 부착
		panel.add(slider);
		
		button=new JButton();
		ImageIcon icon=new ImageIcon("dog.gif");
		button.setIcon(icon);
		button.setSize(INIT_VALUE*10,INIT_VALUE*10);
		panel.add(button);
		add(panel);
		
		setVisible(true);
	}
	@Override
	public void stateChanged(ChangeEvent e) {
		 System.out.println("hihi");
		 JSlider source=(JSlider)e.getSource();
//		 슬라이더를 멈추면
		 if(!(source.getValueIsAdjusting())) {
			 System.out.println("최종값:"+source.getValue());
			 int value=source.getValue();
			 button.setSize(value*10,value*10);
		 }
		
	}
	public static void main(String[] args) {
		new SliderEx();
	}

}

결과


FileChooserEx

작업하다 중단됨.

대략 이런 내용


카카오오븐

회원가입 - 로그인

새 프로젝트 - 이름, 플랫폼 설정 후 새프로젝트 만들기

템플릿을 자유롭게 만들 수 있음.


swing 을 이용해 semi-project로 표현할 내용을 kakaooven 으로 미리 디자인해보기
(키오스크)

1차 기간 : 24.01.02 ~ 24.01.04


Linux 미션

day008 project, gt008.interphone package 내용 출력하기


Windows 미션

day011 project, com.tech.mission package, GBBSwingGame class
com : random 가위,바위,보
user : 가위,바위,보 버튼 누르기
비교 후 유저 승리 / 패배, 승률 출력

메일로 제출
메일 제목 : 스윙GBB게임_홍길동

내가 짠 코드

package com.tech.mission;
//	tbasic@daum.net
//	메일제목 : 스윙GBB게임_홍길동
//	com : random 가위,바위,보
//	user : 가위,바위,보 버튼 누르기
//	비교 후 유저 승리 / 패배, 승률 출력

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

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

class Game extends JFrame implements ActionListener{
	private static JButton[] buttons=new JButton[3];
	private static String[] gbb={"가위","바위","보"};
	private static JPanel topPanel,gbbPanel,resultPanel;
	private static JLabel titleLabel,resultLabel;
	private static String win="승리",draw="무승부";
	private static int w,d,l;
//	com random 입력, user 기본값 : 0
//	가위 : 1, 바위 : 2, 보 : 3
	static Random random=new Random();
	static int com=random.nextInt(3)+1;
	static int user=0;
//	1,2,3 - 가위,바위,보 변환 method
	public static String intToString(int a) {
		String b="";
		if(a==1) b="가위";
		else if(a==2) b="바위";
		else if(a==3) b="보";
		return b;
	}
//	Game method
	public Game() {
		setTitle("GBBSwingGame");
		setSize(600,400);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
//		title panel 만들기
		topPanel=new JPanel();
		titleLabel=new JLabel("User : ??? / Com : ???");
		topPanel.add(titleLabel);
		add(topPanel,BorderLayout.NORTH);
//		가위바위보 버튼 panel 만들기
		gbbPanel=new JPanel();
		gbbPanel.setLayout(new GridLayout(0,3));
		for(int i=0;i<gbb.length;i++) {
			buttons[i]=new JButton(gbb[i]);
			buttons[i].setSize(100,100);
//		가위바위보 버튼에 수신기 부착
			buttons[i].addActionListener(this);
			gbbPanel.add(buttons[i]);
		}
		add(gbbPanel);
//		result panel 만들기
		resultPanel=new JPanel();
		resultLabel=new JLabel("Result : ???");
		resultPanel.add(resultLabel);
		add(resultPanel,BorderLayout.SOUTH);
		
		setVisible(true);
	}
//	비교 판정 method
	public static void isWin(int com, int user) {
		if (com==1 && user==1) {
			d++;
			resultLabel.setText("User "+draw+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==1 && user==2) {
			w++;
			resultLabel.setText("user "+win+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==1 && user==3) {
			l++;
			resultLabel.setText("com "+win+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==2 && user==1) {
			l++;
			resultLabel.setText("com "+win+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==2 && user==2) {
			d++;
			resultLabel.setText(draw+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==2 && user==3) {
			w++;
			resultLabel.setText("user "+win+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==3 && user==1) {
			w++;
			resultLabel.setText("user "+win+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==3 && user==2) {
			l++;
			resultLabel.setText("com "+win+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}else if (com==3 && user==3) {
			d++;
			resultLabel.setText(draw+" / 승률 : "+w+" 승 "+d+" 무 "+l+" 패");
		}
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==buttons[0]) {
			user=1;
			titleLabel.setText("User : "+intToString(user)+" / Com : "+intToString(com));
			isWin(com, user);
			com=random.nextInt(3)+1;
		}else if(e.getSource()==buttons[1]) {
			user=2;
			titleLabel.setText("User : "+intToString(user)+" / Com : "+intToString(com));
			isWin(com, user);
			com=random.nextInt(3)+1;
		}else if(e.getSource()==buttons[2]) {
			user=3;
			titleLabel.setText("User : "+intToString(user)+" / Com : "+intToString(com));
			isWin(com, user);
			com=random.nextInt(3)+1;
		}
	}
}

public class GBBSwingGame{
	public static void main(String[] args) {
		new Game();
	}
}

결과


뭔가 덜 복잡하게 짜는 방법을 더 공부해봐야 할 것 같다.


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

0개의 댓글