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();
}
}
결과
뭔가 덜 복잡하게 짜는 방법을 더 공부해봐야 할 것 같다.