U E D R , A S I H C RSS

새싹교실/2021/카라반/0524



1. 참여자 명단


단장 이길상 16학번 -
단원 강필중 21학번 -
권재민 -
김민경 -
이수은 -

2. 수업

2.1. 진행

1. 장소 : 구글 미츠
2. 시간 : 19시 ~ 21시

2.2. 내용

자바 GUI
  • Swing 컴포넌트로 화면 구성하기
  • 프레임과 패널, 버튼과 텍스트필드

계산기 만들어보기
  • UI과 로직을 분리하여 상속으로 엮어보기

ppt

3. 코드

3.1. 예제

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class JavaGUI extends JFrame{
    String names[] = {"1", "2", "3" ,"+" , "4", "5", "6", "-", "7", "8", "9", "*", "C", "0", "=", "/"};
    JTextField inputText;
    JButton buttons[];

    JavaGUI(){
        setSize(300, 400);
        setTitle("계산기");
        setLayout(new BorderLayout(0, 10));

        JPanel inputPanel = new JPanel(new BorderLayout(5, 2));
        JPanel buttonPanel = new JPanel(new GridLayout(4, 4));

        add(inputPanel, BorderLayout.NORTH);
        add(buttonPanel, BorderLayout.CENTER);


        inputText = new JTextField();
        inputText.setHorizontalAlignment(JTextField.RIGHT);
        inputPanel.add(inputText);
   
        buttons = new JButton[16];
        for(int i = 0; i< 16; i++){
            buttons[i] = new JButton(names[i]);
            buttonPanel.add(buttons[i]);
        }

        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

class Calculator extends JavaGUI implements ActionListener{

    Calculator(){
        for(int i = 0; i< 16; i++){
            buttons[i].addActionListener(this);
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton pressedButton = (JButton)e.getSource();
        String text = pressedButton.getText();

        switch (text) {
            case "=":
                int result = textAnalysis(inputText.getText());
                inputText.setText("" + result);
                break;
            
            case "C":
                inputText.setText("");
                break;
        
            default:
                inputText.setText(inputText.getText() + text);
                break;
        }          
    }

    int textAnalysis(String text){
        if (text.contains("+")){
            String[] formula = text.split("\\+");
            int x = Integer.parseInt(formula[0]);
            int y = Integer.parseInt(formula[1]);
            return x + y;
        }
        if (text.contains("-")){
            String[] formula = text.split("-");
            int x = Integer.parseInt(formula[0]);
            int y = Integer.parseInt(formula[1]);
            return x - y;
        }
        if (text.contains("*")){
            String[] formula = text.split("\\*");
            int x = Integer.parseInt(formula[0]);
            int y = Integer.parseInt(formula[1]);
            return x * y;
        }
        if (text.contains("/")){
            String[] formula = text.split("/");
            int x = Integer.parseInt(formula[0]);
            int y = Integer.parseInt(formula[1]);
            return x / y;
        }
        return 0;
    }
}


public class GUI {
    public static void main(String[] args) {
        System.out.println("시작!");
        Calculator gui = new Calculator();
    }
}


4. 숙제

1. 회고 작성

5. 회고록

권재민
  • 난이도: 6/10
  • 후기: GUI를 처음 접해보게 되어서 신선했어요. 잘 가르쳐주셔서 좀 쉽게 배울 수 있었어요. 물론 자바가 초음이라 막 쉽지는 않았습니다.

이수은
  • 난이도: 5/10
  • 후기: 새로운 것을 해봐서 재밌게 마무리 할 수 있었던 것 같습니다. 차근차근 알려주셔서 좋았어요.

김민경
  • 난이도: 6/10
  • 후기: 오늘 다룬 주제가 흥미로워서 처음 접해본 내용이 많았지만 재밌게 따라갈 수 있었습니다.

강필중
  • 난이도: /10
  • 후기:

이길상
  • 후기: 짧은기간에 너무 많은걸 해결하려 한건 아닌지.




Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-05-31 12:28:36
Processing time 0.0318 sec