์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ฌ์ฉ, ๊ตฌํ์ ๊ธ๊ธํด์ 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);
}
}
'๐ฌ 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 |