Calculator ์‹ค์Šต ์™„์„ฑ

2020. 1. 18. 21:06ยท ๐Ÿ’ฌ Language/Java

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ์‚ฌ์šฉ, ๊ตฌํ˜„์— ๊ธ‰๊ธ‰ํ•ด์„œ MVCํŒจํ„ด๊ณผ ๊ฐ™์€ ๊ธฐ๋ฒ•์„ ์ ์šฉ์‹œํ‚ค์ง€ ์•Š๊ณ , class๋„ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์•„ ๋งŽ์ด ๋ณต์žกํ•œ ์ฝ”๋“œ๋กœ ๋ณด์ธ๋‹ค.

์ดํ›„๋กœ๋Š” ๋…์„œ๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ Java์— ๋Œ€ํ•œ ์ง€์‹์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์žก์•„์•ผ๊ฒ ๋‹ค.

 

Main.java

package calculator;

public class Main {
	public static void main(String[] args) {
		CalculatorFrame mainFrame = new CalculatorFrame();
	}
}

CalculatorFrame.java

package calculator;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.StringTokenizer;

public class CalculatorFrame extends JFrame { 
	JTextArea textarea = new JTextArea();
	JButton button_number[] = new JButton[12];
	JButton button_oper[] = new JButton[4];
	GridBagLayout grid = new GridBagLayout();
	GridBagConstraints grid2 = new GridBagConstraints();	
	
	private void addGrid(GridBagLayout gbl, GridBagConstraints gbc, Component c, 
            int gridx, int gridy, int gridwidth, int gridheight, int weightx, int weighty) {
      gbc.gridx = gridx;
      gbc.gridy = gridy;
      gbc.gridwidth = gridwidth;
      gbc.gridheight = gridheight;
      gbc.weightx = weightx;
      gbc.weighty = weighty;
      gbl.setConstraints(c, gbc);
      add(c);
    }
	
	public CalculatorFrame() {
		super("Calculator");
		
		for (int i = 7; i > 0; i -= 3) {
			for (int j = 0; j < 3; j++) {
				button_number[i+j] = new JButton(Integer.toString(i+j));
			}
		}
		button_number[0] = new JButton(Integer.toString(0));
		button_number[10] = new JButton(".");
		button_number[11] = new JButton("=");
		
		button_oper[0] = new JButton("+");
		button_oper[1] = new JButton("-");
		button_oper[2] = new JButton("*");
		button_oper[3] = new JButton("/");
		
		ActionListener numberEventHandler = new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				if(textarea.getText().indexOf('+') == -1 && textarea.getText().indexOf('-') == -1 && textarea.getText().indexOf('*') == -1 && textarea.getText().indexOf('/') == -1)
					textarea.append(e.getActionCommand());
			}
		};
		
		ActionListener operEventHandler = new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				if(textarea.getText().indexOf('=') == -1)
					textarea.append(e.getActionCommand());
			}
		};

		
		ActionListener resultEventHandler = new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
					String data = textarea.getText();
					StringTokenizer token = new StringTokenizer(data,"+-*/",true);
					double a = Double.parseDouble(token.nextToken());
					String buffer = token.nextToken();
					double b = Double.parseDouble(token.nextToken());
					textarea.append(e.getActionCommand());
					if(buffer.equals("+")) {
						textarea.append(Double.toString(a+b));
					}
					
					else if (buffer.equals("-")) {
						textarea.append(Double.toString(a-b));
					}
					
					else if (buffer.equals("*")) {
						textarea.append(Double.toString(a*b));
					}
					
					else if (buffer.equals("/")) {
						textarea.append(Double.toString(a/b));
					}
			}
		};
		
		for (int i = 0; i < 4; i++) {
			button_oper[i].addActionListener(numberEventHandler);
		}
		
		for (int i = 0; i < 11; i++) {
			button_number[i].addActionListener(operEventHandler);
		}
		
		button_number[11].addActionListener(resultEventHandler);
		
		grid2.fill=GridBagConstraints.BOTH;
		addGrid(grid, grid2, textarea, 0,0,4,1,1,1);
		
		int k = 0;
		for (int i = 7; i > 0; i -= 3) {
			for (int j = 0; j < 3; j++) {
				addGrid(grid, grid2, button_number[i+j], j, k+1, 1,1,1,1);
			}
			k++;
		}

		for (int i = 0; i < 4; i++)
		{		
			addGrid(grid, grid2, button_oper[i], 3,i+1,1,1,1,1);
		}
		
		addGrid(grid, grid2, button_number[10], 0,4,1,1,1,1);
		addGrid(grid, grid2, button_number[0], 1,4,1,1,1,1);
		addGrid(grid, grid2, button_number[11], 2,4,1,1,1,1);
		setLayout(grid);
		
		setSize(300,400);
		setVisible(true);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
}

Calculator

'๐Ÿ’ฌ Language > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Java Thread  (0) 2020.02.03
Overloading๊ณผ Overriding  (0) 2020.01.30
StringTokenizer  (0) 2020.01.18
extends์™€ implements  (0) 2020.01.17
Event๋ž€?  (0) 2020.01.11
'๐Ÿ’ฌ Language/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Java Thread
  • Overloading๊ณผ Overriding
  • StringTokenizer
  • extends์™€ implements
_์ฃผ๋…ธ
_์ฃผ๋…ธ
_์ฃผ๋…ธ
juno.log
_์ฃผ๋…ธ
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (88)
    • ๐Ÿ’ฌ Language (15)
      • C (1)
      • C++ (1)
      • Java (12)
    • ๐Ÿ–ฅ๏ธ Computer (46)
      • Data Structure (2)
      • Computer Science (3)
      • Algorithm Solution (41)
    • ๐ŸŒฑ Spring (14)
    • ๐Ÿ“ฆ Database (1)
    • ๐Ÿฅณ Project (6)
      • kakao chatbot (6)
    • ๐Ÿ˜† Daily (5)
      • ์žก๋‹ด (5)
      • TIL (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ๋ธ”๋กœ๊ทธ ๊ด€๋ฆฌ
  • GitHub
  • Velog

์ธ๊ธฐ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.0
_์ฃผ๋…ธ
Calculator ์‹ค์Šต ์™„์„ฑ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.