Java/GUI
[자바] GUI이용한 계산기 만들기
달의요정루나
2021. 7. 1. 20:24
GUI를 이용한 자바 코딩문들입니다. 구글링을 통해서 여러 코딩문들을 참고했습니다.
package calculator;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class Ex1 extends JFrame implements ActionListener, KeyListener{
int displayMode;
Panel jp = new Panel();
Button[] jb = new Button[10];
Button plusbtn=new Button("+");
Button minusbtn=new Button("-");
Button multibtn=new Button("*");
Button divbtn=new Button("/");
Button equalbtn=new Button("=");
Button dotbtn=new Button(".");
Label prev = new Label("");
Label operator = new Label("");
Label flag = new Label("");
Label displaylabel = new Label("0");
public Ex1() {
this.setLayout(new BorderLayout());
jp.setLayout(new GridLayout(4,4,5,5));
for (int i = 7; i <=9; i++) {
jb[i]=new Button(Integer.toString(i));
jb[i].setBackground(new Color(255,224,32));
jp.add(jb[i]);
jb[i].addActionListener(this);
jb[i].addKeyListener(this);
}
jp.add(plusbtn,"+");
plusbtn.setBackground(new Color(255,0,0));
plusbtn.addActionListener(this);
plusbtn.addKeyListener(this);
for (int j = 4; j <=6; j++) {
jb[j]=new Button(Integer.toString(j));
jb[j].setBackground(new Color(255,224,32));
jp.add(jb[j]);
jb[j].addActionListener(this);
jb[j].addKeyListener(this);
}
jp.add(minusbtn,"-");
minusbtn.setBackground(new Color(255,0,0));
minusbtn.addActionListener(this);
minusbtn.addKeyListener(this);
for (int k = 1; k <=3; k++) {
jb[k]=new Button(Integer.toString(k));
jb[k].setBackground(new Color(255,224,32));
jp.add(jb[k]);
jb[k].addActionListener(this);
jb[k].addKeyListener(this);
}
jp.add(multibtn,"*");
multibtn.setBackground(new Color(255,0,0));
multibtn.addActionListener(this);
multibtn.addKeyListener(this);
jb[0]=new Button(Integer.toString(0));
jb[0].setBackground(new Color(255,224,32));
jp.add(jb[0]);
jb[0].addActionListener(this);
jb[0].addKeyListener(this);
jp.add(dotbtn,".");
dotbtn.setBackground(new Color(255,224,32));
dotbtn.addActionListener(this);
dotbtn.addKeyListener(this);
jp.add(equalbtn,"=");
equalbtn.setBackground(new Color(255,0,0));
equalbtn.addActionListener(this);
equalbtn.addKeyListener(this);
jp.add(divbtn,"/");
divbtn.setBackground(new Color(255,0,0));
divbtn.addActionListener(this);
divbtn.addKeyListener(this);
this.add(jp,BorderLayout.CENTER);
this.add(displaylabel, BorderLayout.NORTH);
displaylabel.setAlignment(Label.RIGHT);
displaylabel.setBackground(new Color(0,192,0));
setSize(300,400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < jb.length; i++) {
if (e.getSource()==jb[i]) {
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+i);
}
else {
displaylabel.setText(displaylabel.getText()+i);
}
System.out.println(jb[i].getLabel());
}
}
if (e.getSource()==equalbtn) {
double op1,op2,result;
op1=Double.parseDouble(prev.getText());
op2=Double.parseDouble(displaylabel.getText());
if (operator.getText().equals("+")) {
result=op1+op2;
displaylabel.setText(Double.toString(result));
}
if (operator.getText().equals("-")) {
result=op1-op2;
displaylabel.setText(Double.toString(result));
}
if (operator.getText().equals("*")) {
result=op1*op2;
displaylabel.setText(Double.toString(result));
}
if (operator.getText().equals("/")) {
result=op1/op2;
displaylabel.setText(Double.toString(result));
}
}
if (e.getSource()==plusbtn) {
prev.setText(displaylabel.getText());
operator.setText("+");
displaylabel.setText("");
}
if (e.getSource()==minusbtn) {
prev.setText(displaylabel.getText());
operator.setText("-");
displaylabel.setText("");
}
if (e.getSource()==multibtn) {
prev.setText(displaylabel.getText());
operator.setText("*");
displaylabel.setText("");
}
if (e.getSource()==divbtn) {
prev.setText(displaylabel.getText());
operator.setText("/");
displaylabel.setText("");
}
if (e.getSource()==dotbtn) {
if(displaylabel.getText().contains(".")) {
return ;
}
displaylabel.setText(displaylabel.getText()+".");
}
}
@Override
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
switch (keycode) {
case KeyEvent.VK_0:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+0);
}
else {
displaylabel.setText(displaylabel.getText()+0);
}
return;
case KeyEvent.VK_1:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+1);
}
else {
displaylabel.setText(displaylabel.getText()+1);
}
return;
case KeyEvent.VK_2:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+2);
}
else {
displaylabel.setText(displaylabel.getText()+2);
}
return;
case KeyEvent.VK_3:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+3);
}
else {
displaylabel.setText(displaylabel.getText()+3);
}
return;
case KeyEvent.VK_4:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+4);
}
else {
displaylabel.setText(displaylabel.getText()+4);
}
return;
case KeyEvent.VK_5:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+5);
}
else {
displaylabel.setText(displaylabel.getText()+5);
}
return;
case KeyEvent.VK_6:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+6);
}
else {
displaylabel.setText(displaylabel.getText()+6);
}
return;
case KeyEvent.VK_7:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+7);
}
else {
displaylabel.setText(displaylabel.getText()+7);
}
return;
case KeyEvent.VK_8:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+8);
}
else {
displaylabel.setText(displaylabel.getText()+8);
}
return;
case KeyEvent.VK_9:
if (displaylabel.getText().equals("0")) {
displaylabel.setText(""+9);
}
else {
displaylabel.setText(displaylabel.getText()+9);
}
return;
case KeyEvent.VK_MINUS:
prev.setText(displaylabel.getText());
operator.setText("-");
displaylabel.setText("");
return;
case KeyEvent.VK_MULTIPLY:
prev.setText(displaylabel.getText());
operator.setText("*");
displaylabel.setText("");
return;
case KeyEvent.VK_SLASH://divide
prev.setText(displaylabel.getText());
operator.setText("/");
displaylabel.setText("");
return;
case KeyEvent.VK_PERIOD:
if(displaylabel.getText().contains(".")) {
return ;
}
displaylabel.setText(displaylabel.getText()+".");
return;
case KeyEvent.VK_SHIFT:
return;
case KeyEvent.VK_EQUALS:
if(e.isShiftDown()) {
prev.setText(displaylabel.getText());
operator.setText("+");
displaylabel.setText("");
return;
}
double op1,op2,result;
op1=Double.parseDouble(prev.getText());
op2=Double.parseDouble(displaylabel.getText());
if (operator.getText().equals("+")) {
result=op1+op2;
displaylabel.setText(Double.toString(result));
}
if (operator.getText().equals("-")) {
result=op1-op2;
displaylabel.setText(Double.toString(result));
}
if (operator.getText().equals("*")) {
result=op1*op2;
displaylabel.setText(Double.toString(result));
}
if (operator.getText().equals("/")) {
result=op1/op2;
displaylabel.setText(Double.toString(result));
}
return;
default:
System.out.println("default");
}
}
public static void main(String[] args) {
Ex1 e = new Ex1();
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}