자바 Gui 계산기 | 자바스윙 – 간단한 계산기 만들기 162 개의 가장 정확한 답변

당신은 주제를 찾고 있습니까 “자바 gui 계산기 – 자바스윙 – 간단한 계산기 만들기“? 다음 카테고리의 웹사이트 https://you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Danny TWLC 이(가) 작성한 기사에는 조회수 14,699회 및 좋아요 137개 개의 좋아요가 있습니다.

자바 gui 계산기 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 자바스윙 – 간단한 계산기 만들기 – 자바 gui 계산기 주제에 대한 세부정보를 참조하세요

안녕하세요 오늘강의에서는 자바스윙을통해서 간단한계산기를 만들어 보았습니다.
소스코드는
https://github.com/DannyTWLC/Java-Lesson/blob/master/Calculator.java
에서 확인하실수있습니다.
도움이 되셨다면, 구독▶️ 좋아요👍 부탁드립니다 ^^

자바 gui 계산기 주제에 대한 자세한 내용은 여기를 참조하세요.

[Java] GUI 계산기 만들기(1) – 챙’s Story

다음에는 키보드 입력 기능을 넣어보도록 하자… 소스코드. CarlcFrame.java package calculator; import javax.swing.JPanel; import …

+ 여기에 더 보기

Source: chaengstory.tistory.com

Date Published: 11/18/2022

View: 7622

[ JAVA/ GUI ] 계산기만들기(최종)/ GUI계산기/ 자바계산기/ 자바 …

[ JAVA/ GUI ] 계산기만들기(최종)/ GUI계산기/ 자바계산기/ 자바GUI계산기/ 자바GUI/ javaGUI/ JavaGUI/ JAVA/ java/ 자바/ 이클립스/ 자바독학/ECLIPSE/ …

+ 여기에 표시

Source: asterisco.tistory.com

Date Published: 7/8/2022

View: 9470

195. (java/자바) GUI (awt/swing) – 사칙 연산 계산기 프로그램 …

(java/자바) GUI (awt/swing) – 사칙 연산 계산기 프로그램 만들기 … 자바에서는 JFrame을 사용해서 GUI 프로그램을 만들 수 있습니다 * 2. new …

+ 여기에 더 보기

Source: kkh0977.tistory.com

Date Published: 7/4/2021

View: 9977

1라운드. (자바 GUI 활용) 계산기 만들기! – 줌코딩의 코딩일기

1라운드. (자바 GUI 활용) 계산기 만들기! … 학기를 마무리하고 김호준 교수님과 함께 하는 공부가 시작되었다. 공부라기 보다는 교수님이 라운드 별로 …

+ 더 읽기

Source: zoomkoding.github.io

Date Published: 12/20/2022

View: 9315

[java,자바] JFrame 이용하여 계산기 – 끄적끄적

버튼 안에 값 배열 public Carculator() { super(“계산기”); super.setResizable(true); // 결과 창 GUI label = new JLabel(“0”, JLabel.

+ 더 읽기

Source: kangsan-lee.tistory.com

Date Published: 5/29/2021

View: 8614

JAVA Swing으로 만든 사칙연산 간단 계산기

복습할 겸 좋을 것 같아서 만들어보았다. swing으로 만든 간단 사칙연산 계산기. package project_1; import java.awt.event.

+ 자세한 내용은 여기를 클릭하십시오

Source: w36495.tistory.com

Date Published: 7/18/2022

View: 956

[GUI/Swing]자바 Swing을 이용한 계산기 프로그램

아무튼 이번 포스팅은 자바 GUI/Swing을 이용해서 계산기 프로그램을 만들어보겠습니다~. 다른 분들이 짠 계산기 코드를 참조해서 직접 제가 응용해 …

+ 여기를 클릭

Source: sky17777.tistory.com

Date Published: 10/20/2022

View: 1599

주제와 관련된 이미지 자바 gui 계산기

주제와 관련된 더 많은 사진을 참조하십시오 자바스윙 – 간단한 계산기 만들기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

자바스윙 - 간단한 계산기 만들기
자바스윙 – 간단한 계산기 만들기

주제에 대한 기사 평가 자바 gui 계산기

  • Author: Danny TWLC
  • Views: 조회수 14,699회
  • Likes: 좋아요 137개
  • Date Published: 2019. 5. 16.
  • Video Url link: https://www.youtube.com/watch?v=J44d_ynAqNY

[Java] GUI 계산기 만들기(1)

계산기 완성

5/19~5/21 계산기 만들기

다음에는 키보드 입력 기능을 넣어보도록 하자…

소스코드

CarlcFrame.java

package calculator; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.GridLayout; import java.awt.Font; import java.awt.Font; import java.awt.Color; import java.awt.BorderLayout; public class CalcFrame extends JFrame implements ActionListener { JLabel label; // 연산 결과창 boolean state = false; // 화면에 표시된 number 핸들러 double num1, num2; double result; // 연산 결과 String func = “”; // 기능 연산자 String nInput = “”; // 마지막에 누른 연산자 저장 String btn[] = { “←”, “C”, “%”, “x²”, “7”, “8”, “9”, “÷”, “4”, “5”, “6”, “×”, “1”, “2”, “3”, “-“, “.”, “0”, “=”, “+” }; // 버튼 안에 값 배열 public CalcFrame() { super(“Calculator”); // title 지정 super.setResizable(true); // 프레임의 크기를 사용자가 조절 /* * JFrame : 메인 프레임 JPanel : 보조 프레임 JLabel : 기능을 수행하는 컴포넌트 */ // 결과 창 GUI label = new JLabel(“0”, JLabel.RIGHT); // (“첫화면 출력될 값”, 위치) JPanel mainView = new JPanel(); label.setFont(new Font(“Serif”, Font.BOLD, 50)); // Font 지정 label.setBackground(Color.WHITE); // 결과창 배경색 지정 label.setOpaque(true); // 배경색을 적용하기 위해 불투명 설정 // 버튼 창 GUI JPanel btnView = new JPanel(); btnView.setLayout(new GridLayout(5, 4, 2, 2)); // 행과 열로 구성된 레이아웃 설정 (row, cols, 간격, 간격) JButton button[] = new JButton[btn.length]; // 버튼 생성, 배열의 길이만큼 값을 가져옴 for (int i = 0; i < btn.length; i++) { button[i] = new JButton(btn[i]); button[i].setFont(new Font("Serif", Font.BOLD, 25)); // Font 지정 button[i].addActionListener(this); // 익명클래스로 버튼 이벤트 추가 ,이벤트 리스너의 객체이므로 this로 지정 if (i == 0 || i == 1 || i == 18) button[i].setForeground(Color.RED); // 기능별 색 지정 if (i == 2 || i == 3 || i == 7 || i == 11 || i == 15 || i == 19) button[i].setForeground(Color.BLUE); btnView.add(button[i]); } // 프레임 배치 및 설정 mainView.setLayout(new BorderLayout()); // 동서남북 레이아웃 배치 add(label, BorderLayout.CENTER); // 결과창 배치 add(btnView, BorderLayout.SOUTH); // 버튼창 베치 setBounds(100, 100, 300, 400); // 프레임의 크기 지정 setDefaultCloseOperation(EXIT_ON_CLOSE); // X버튼을 누르면 닫히는 설정 setVisible(true); // 프레임이 보이도록 설정 } // 마우스 클릭에 의한 동작 @Override public void actionPerformed(ActionEvent e) { String input = e.getActionCommand(); // 이벤트를 발생시킨 객체의 문자열을 가져와서 input에 넣음 if (input.equals("+")) { num1 = num2; func = "+"; nInput = ""; // 마지막에 누른 연산자 저장 } else if (input.equals("-")) { num1 = num2; func = "-"; nInput = ""; } else if (input.equals("×")) { num1 = num2; func = "×"; nInput = ""; } else if (input.equals("÷")) { num1 = num2; func = "÷"; nInput = ""; } else if (input.equals("%")) { num1 = num2; func = "%"; nInput = ""; result = num1 / 100; label.setText(String.valueOf(result)); //결과값을 문자열로 반환하여 결과창에 출력 } else if (input.equals("x²")) { num1 = num2; func = "x²"; nInput = ""; result = num1 * num1; label.setText(String.valueOf(result)); state = true; } else if (input.equals("C")) { // Clear nInput = ""; num2 = 0; num1 = 0; label.setText("0"); // substring(start, end) - start부터 end 전까지 문자열 자르기 } else if (input.equals("←")) { // 왼쪽부터 순차적으로 지워지도록 함 setBackSpace(getBackSpace().substring(0, getBackSpace().length() - 1)); if (getBackSpace().length() < 1) { // 더 이상 지울 숫자가 없으면, 0으로 clear nInput = ""; num2 = 0; num1 = 0; label.setText("0"); } } else if (input.equals("=")) { if (func.equals("+")) { result = num1 + num2; label.setText(String.valueOf(result)); //결과값을 문자열로 반환하여 결과창에 출력 state = true; // 결과 값이 나온 후 다음 입력이 들어왔을 때 화면에 표시된 결과 값을 지운다. } else if (func.equals("-")) { result = num1 - num2; label.setText(String.valueOf(result)); state = true; } else if (func.equals("×")) { result = num1 * num2; label.setText(String.valueOf(result)); state = true; } else if (func.equals("÷")) { result = num1 / num2; label.setText(String.valueOf(result)); state = true; } } else { if (state) { label.setText("0"); state = false; num1 = 0; num2 = 0; nInput = ""; } nInput += e.getActionCommand(); label.setText(nInput); num2 = Double.parseDouble(nInput); //문자열에서 double형 변 } } private void setBackSpace(String bs) { label.setText(bs); } private String getBackSpace() { return label.getText(); } } Carculator.java package calculator; public static void main(String[] args) { new CalcFrame(); } }

[ JAVA/ GUI ] 계산기만들기(최종)/ GUI계산기/ 자바계산기/ 자바GUI계산기/ 자바GUI/ javaGUI/ JavaGUI/ JAVA/ java/ 자바/ 이클립스/ 자바독학/ECLIPSE/ eclipse/ 독학/ IT독학/ 언어독학

GUI 에 계산기 만들기 완성하기.

형태 만들기 및 간단한 작동원리는 아래 주소 참조.

http://blog.naver.com/pandekten5/220776972561

00. 코딩하고 실행 해보자.

01. 계산기 GUI창이 뜬다.

02. 임의의 숫자버튼(여기서는 2)을 눌러서 표기되는것을 확인하자.

03. 3/2 를 누르고 결과값이 맞게 출력되는지 확인하자.

또한, 아래 3이 저장되어서 divide 오퍼레이션을 써서 된것을 확인할 수 있다.

※. 코드

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

class MyFrame extends JFrame implements ActionListener

{

private JPanel displayPanel;

private JPanel buttonPanel;

private JPanel debugPanel;

private JTextField display;

private JButton[] buttons; // 0 ~ 9

private JButton btnPlus;

private JButton btnMinus;

private JButton btnProduct;

private JButton btnDivide;

private JButton btnEqual;

private JButton btnCE;

private JLabel prev;

private JLabel operator;

private JLabel flag;

public MyFrame()

{

this.setSize(300, 400);

this.setTitle(“GUI TEST”);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Programming Here

this.setLayout(new BorderLayout());

/*

* 3개의 panel 객체 만들고 각자 layout 설정

*/

displayPanel = new JPanel();

buttonPanel = new JPanel();

debugPanel = new JPanel();

displayPanel.setLayout(new FlowLayout());

buttonPanel.setLayout(new GridLayout(0,4, 5, 5));

debugPanel.setLayout(new FlowLayout());

/*

* displayPanel의 component를 만들어서 붙이기

*/

display = new JTextField(11);

display.setText(“0”);

display.setHorizontalAlignment(JTextField.RIGHT);

Font font = new Font(“Serif”, Font.BOLD, 30);

display.setFont(font);

displayPanel.add(display);

/*

* buttonPanel에 component 만들고, 붙이기

*/

Font fontBtn = new Font(“Serif”, Font.BOLD, 20);

buttons = new JButton[10];

// 실제 버튼 객체 생성

for(int i=0; i숫자(double)

op2 = Double.parseDouble(display.getText());

if(operator.getText().equals(“+”))

{

result = op1 + op2;

display.setText(“” + result);

// display.setText( String.valueOf(result));

}

if(operator.getText().equals(“-“))

{

result = op1 – op2;

display.setText(“” + result);

// display.setText( String.valueOf(result));

}

if(operator.getText().equals(“*”))

{

result = op1 * op2;

display.setText(“” + result);

// display.setText( String.valueOf(result));

}

if(operator.getText().equals(“/”))

{

result = op1 / op2;

display.setText(“” + result);

// display.setText( String.valueOf(result));

}

}

if(e.getSource() == btnPlus)

{

prev.setText( display.getText() );

operator.setText(“+”);

flag.setText(“”);

}

if(e.getSource() == btnMinus)

{

prev.setText( display.getText() );

operator.setText(“-“);

flag.setText(“”);

}

if(e.getSource() == btnProduct)

{

prev.setText( display.getText() );

operator.setText(“*”);

flag.setText(“”);

}

if(e.getSource() == btnDivide)

{

prev.setText( display.getText() );

operator.setText(“/”);

flag.setText(“”);

}

if(e.getSource() == btnCE)

{

display.setText(“0”);

prev.setText(“”);

operator.setText(“”);

flag.setText(“”);

}

}

}

public class Test {

public static void main(String[] args) {

MyFrame frame = new MyFrame();

}

}

195. (java/자바) GUI (awt/swing)

728×90

반응형

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : Eclipse

개발 언어 : Java

/* =========================== */

/* =========================== */

[소스 코드]

//TODO 메인 메소드 시작 부분 public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(“[GUI (awt/swing) – 사칙 연산 계산기 프로그램 만들기]”); /*[설 명] * 1. 자바에서는 JFrame을 사용해서 GUI 프로그램을 만들 수 있습니다 * 2. new GridLayout(행, 열, 가로여백, 세로여백) 표시 – 테이블 모양 형식 * 3. ActionListener : 클릭 이벤트 정의 실시 * 4. for문 : 동적으로 배열에 포함된 값을 사용해 버튼을 생성합니다 * */ //TODO 클릭 이벤트를 정의하기 위해 액티비티 객체 생성 mainActivity = new MainActivity13(); //TODO 부모 프레임 생성 JFrame frm = new JFrame(“계산기 프로그램”); //TODO 부모 프레임 크기 설정 (가로, 세로) frm.setSize(500, 500); //TODO 부모 프레임을 화면 가운데에 배치 frm.setLocationRelativeTo(null); //TODO 부모 프레임을 닫았을 때 메모리에서 제거되도록 설정 frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //TODO 부모 프레임 창 크기 고정 실시 frm.setResizable(false); //TODO 부모 레이아웃 설정 frm.getContentPane().setLayout(null); //TODO 자식 레이아웃 [텍스트] 생성 calc_txt = new JLabel(“0”); calc_txt.setBounds(0, 0, 500, 100); //TODO setBounds(가로위치, 세로위치, 가로길이, 세로길이); calc_txt.setOpaque(true); //TODO setBackground 적용하기 위한 선행 설정 calc_txt.setBackground(Color.GRAY); //TODO 백그라운드 색상 정의 calc_txt.setForeground(Color.WHITE); //TODO 텍스트 색상 정의 calc_txt.setFont(new Font(“맑은 고딕”, 0, 20)); //TODO 폰트 정의 calc_txt.setHorizontalAlignment(JLabel.CENTER); //TODO 텍스트 센터 표시 설정 //TODO 자식 레이아웃 [텍스트] 생성 result_txt = new JLabel(“result”); result_txt.setBounds(0, 100, 500, 50); //TODO setBounds(가로위치, 세로위치, 가로길이, 세로길이); result_txt.setOpaque(true); //TODO setBackground 적용하기 위한 선행 설정 result_txt.setBackground(Color.darkGray); //TODO 백그라운드 색상 정의 result_txt.setForeground(Color.WHITE); //TODO 텍스트 색상 정의 result_txt.setFont(new Font(“맑은 고딕”, 0, 20)); //TODO 폰트 정의 result_txt.setHorizontalAlignment(JLabel.CENTER); //TODO 텍스트 센터 표시 설정 //TODO 자식 레이아웃 [버튼] 생성 JPanel grid_panel = new JPanel(); grid_panel.setLayout(new GridLayout(4, 4, 0, 0)); //테이블 형식 – 행, 열, 가로 여백, 세로 여백 for(int idx=0; idx[java,자바] JFrame 이용하여 계산기

처음에만든 코드

package Calculator; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.GridLayout; import java.awt.Font; import java.awt.Font; import java.awt.Color; import java.awt.BorderLayout; public class Carculator extends JFrame implements ActionListener { JLabel label; // 연산 결과창 boolean state = false; // 화면에 표시된 number 핸들러 double num1, num2; double result; // 연산 결과 String func = “”; // 기능 연산자 String nInput = “”; // 마지막에 누른 연산자 저장 String btn1[] = { “Backspace”, “clear”, “End” }; //3개 값배열 String btn2[] = { “7”, “8”, “9”, “+”, “4”, “5”, “6”, “-“, “1”, “2”, “3”, “*”, “0”, “.”, “=”, “/” };// 버튼 안에 값 배열 public Carculator() { super(“계산기”); super.setResizable(true); // 결과 창 GUI label = new JLabel(“0”, JLabel.RIGHT); label.setFont(new Font(“궁서체”, Font.BOLD, 50)); // 버튼 창 GUI JPanel btnView1 = new JPanel(); JPanel btnView2 = new JPanel(); btnView1.setLayout(new GridLayout(1, 0, 0, 0)); btnView2.setLayout(new GridLayout(4, 4, 2, 2)); // 행과 열로 구성된 레이아웃 설정 (row, cols, 간격, 간격) JButton button1[] = new JButton[btn1.length]; JButton button2[] = new JButton[btn2.length]; // 버튼 생성, 배열의 길이만큼 값을 가져옴 for (int i = 0; i < btn1.length; i++) { button1[i] = new JButton(btn1[i]); button1[i].addActionListener(this); // 익명클래스로 버튼 이벤트 추가 ,이벤트 리스너의 객체이므로 this로 지정 label.setFont(new Font("궁서체", Font.BOLD, 50)); btnView1.add(button1[i]); } for (int i = 0; i < btn2.length; i++) { button2[i] = new JButton(btn2[i]); button2[i].addActionListener(this); // 익명클래스로 버튼 이벤트 추가 ,이벤트 리스너의 객체이므로 this로 지정 label.setFont(new Font("궁서체", Font.BOLD, 50)); btnView2.add(button2[i]); } // 프레임 배치 및 설정 add(label, BorderLayout.NORTH); // 결과창 add(btnView1, BorderLayout.CENTER); // 버튼창 add(btnView2, BorderLayout.SOUTH); // 버튼창 setBounds(100, 100, 300, 400); setSize(280,350); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setVisible(true); } // 마우스 클릭에 의한 동작 /* boolean state = false; // 화면에 표시된 number 핸들러 double num1, num2; double result; // 연산 결과 String func = ""; // 기능 연산자 String nInput = ""; // 마지막에 누른 연산자 저장 */ @Override public void actionPerformed(ActionEvent e) { String input = e.getActionCommand(); // 이벤트를 발생시킨 객체의 문자열을 가져와서 input에 넣음 if (input.equals("+")) { num1 = num2; func = "+"; nInput = ""; } else if (input.equals("-")) { num1 = num2; func = "-"; nInput = ""; } else if (input.equals("*")) { num1 = num2; func = "*"; nInput = ""; } else if (input.equals("/")) { num1 = num2; func = "/"; nInput = ""; } else if (input.equals("clear")) { // Clear nInput = ""; num2 = 0; num1 = 0; label.setText("0"); } else if (input.equals("Backspace")) { // 오른쪽부터 지워짐 setBackSpace(getBackSpace().substring(0, getBackSpace().length() - 1)); if (getBackSpace().length() < 1) { // 더 이상 지울 숫자가 없으면, 0으로 clear nInput = ""; num2 = 0; num1 = 0; label.setText("0"); } } else if (input.equals("=")) { if (func.equals("+")) { result = num1 + num2; label.setText(String.valueOf(result)); //결과값을 문자열로 반환하여 결과창에 출력 state = true; // 결과 값이 나온 후 다음 입력이 들어왔을 때 화면에 표시된 결과 값을 지운다. } else if (func.equals("-")) { result = num1 - num2; label.setText(String.valueOf(result)); state = true; } else if (func.equals("*")) { result = num1 * num2; label.setText(String.valueOf(result)); state = true; } else if (func.equals("/")) { result = num1 / num2; label.setText(String.valueOf(result)); state = true; } } else { if (state) { label.setText("0"); state = false; num1 = 0; num2 = 0; nInput = ""; } nInput += e.getActionCommand(); label.setText(nInput); num2 = Double.parseDouble(nInput); //문자열에서 double형 변 } } private void setBackSpace(String bs) { label.setText(bs); } private String getBackSpace() { return label.getText(); } public static void main(String[] args) { new Carculator(); } } 뼈대부터 잘못만든거같아서 다시 강의 듣고만들어봄 package Calculator; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; // 패널을 상속받아 이 자체가 패널이 된다. public class Calculator2 extends JPanel implements ActionListener{ Font fnt = new Font("Arial", Font.BOLD, 20); //JFrame - North JTextField resultTf = new JTextField("0.0"); //JFrame - Center JPanel centerPane = new JPanel(new BorderLayout()); //디폴트 레이아웃 : Flow JPanel northPane = new JPanel(new GridLayout(1,3)); JPanel btnPane = new JPanel(new GridLayout(4,4)); String btnLbl[] = {"BackSpace","Clear","End", "7","8","9","+", "4","5","6","-", "1","2","3","*", "0",".","=","/"}; //연산자보관할 변수 String operator = ""; //피연산자 보관 double result = 0.0; public Calculator2() { setLayout(new BorderLayout()); //JFrame - North add("North", resultTf); resultTf.setFont(fnt); //내용을 오른쪽 정렬 resultTf.setHorizontalAlignment(JTextField.RIGHT); //JFrame - Center centerPane.add("North", northPane); centerPane.add(BorderLayout.CENTER, btnPane); add("Center", centerPane); //버튼 생성 for(int i=0; i

JAVA Swing으로 만든 사칙연산 간단 계산기

콘솔로 만든 후에 지난 학기에 배웠던 swing으로 해보면 어떨까 싶었다.

복습할 겸 좋을 것 같아서 만들어보았다.

swing으로 만든 간단 사칙연산 계산기

package project_1; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class SwingMain { JFrame frame; JPanel panel; JLabel result; String total = null; // 전역변수 초기화 int a = -1; int b = -1; int CalCase = 0; boolean count; public void Layout() { frame = new JFrame(); panel = new JPanel(); JButton btn_num1 = new JButton(“1”); JButton btn_num2 = new JButton(“2”); JButton btn_num3 = new JButton(“3”); JButton btn_num4 = new JButton(“4”); JButton btn_num5 = new JButton(“5”); JButton btn_num6 = new JButton(“6”); JButton btn_num7 = new JButton(“7”); JButton btn_num8 = new JButton(“8”); JButton btn_num9 = new JButton(“9”); JButton btn_num0 = new JButton(“0”); JButton btn_plus = new JButton(“+”); JButton btn_minus = new JButton(“-“); JButton btn_mul = new JButton(“*”); JButton btn_div = new JButton(“/”); JButton btn_equal = new JButton(“=”); JButton btn_reset = new JButton(“ac”); result = new JLabel(“0”, JLabel.RIGHT); panel.setLayout(null); // panel에 요소들 추가 panel.add(result); panel.add(btn_plus); panel.add(btn_minus); panel.add(btn_mul); panel.add(btn_div); panel.add(btn_num1); panel.add(btn_num2); panel.add(btn_num3); panel.add(btn_num4); panel.add(btn_num5); panel.add(btn_num6); panel.add(btn_num7); panel.add(btn_num8); panel.add(btn_num9); panel.add(btn_num0); panel.add(btn_equal); panel.add(btn_reset); // 각 요소 레이아웃에 배치 result.setBounds(50, 50, 230, 50); btn_plus.setBounds(50, 110, 50, 50); btn_minus.setBounds(110, 110, 50, 50); btn_mul.setBounds(170, 110, 50, 50); btn_div.setBounds(230, 110, 50, 50); btn_num1.setBounds(50, 170, 50, 50); btn_num2.setBounds(110, 170, 50, 50); btn_num3.setBounds(170, 170, 50, 50); btn_num4.setBounds(50, 230, 50, 50); btn_num5.setBounds(110, 230, 50, 50); btn_num6.setBounds(170, 230, 50, 50); btn_num7.setBounds(50, 290, 50, 50); btn_num8.setBounds(110, 290, 50, 50); btn_num9.setBounds(170, 290, 50, 50); btn_num0.setBounds(50, 350, 170, 50); btn_equal.setBounds(230, 170, 50, 110); btn_reset.setBounds(230, 290, 50, 110); // 이벤트 발생 btn_num1.addActionListener(new Calculate()); btn_num2.addActionListener(new Calculate()); btn_num3.addActionListener(new Calculate()); btn_num4.addActionListener(new Calculate()); btn_num5.addActionListener(new Calculate()); btn_num6.addActionListener(new Calculate()); btn_num7.addActionListener(new Calculate()); btn_num8.addActionListener(new Calculate()); btn_num9.addActionListener(new Calculate()); btn_num0.addActionListener(new Calculate()); btn_plus.addActionListener(new Arithmetic()); btn_minus.addActionListener(new Arithmetic()); btn_mul.addActionListener(new Arithmetic()); btn_div.addActionListener(new Arithmetic()); btn_equal.addActionListener(new Equal()); btn_reset.addActionListener(new AllClear()); frame.add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(350, 500); frame.setVisible(true); } public static void main(String[] args) { SwingMain SwingCal = new SwingMain(); SwingCal.Layout(); } class Calculate implements ActionListener { public void actionPerformed(ActionEvent e) { JButton btn = (JButton)e.getSource(); if(count==false) { if(btn.getText().equals(“1”)) a = 1; else if(btn.getText().equals(“2”)) a = 2; else if(btn.getText().equals(“3”)) a = 3; else if(btn.getText().equals(“4”)) a = 4; else if(btn.getText().equals(“5”)) a = 5; else if(btn.getText().equals(“6”)) a = 6; else if(btn.getText().equals(“7”)) a = 7; else if(btn.getText().equals(“8”)) a = 8; else if(btn.getText().equals(“9”)) a = 9; else if(btn.getText().equals(“0”)) a = 0; } else if(count==true) { if(btn.getText().equals(“1”)) b = 1; else if(btn.getText().equals(“2”)) b = 2; else if(btn.getText().equals(“3”)) b = 3; else if(btn.getText().equals(“4”)) b = 4; else if(btn.getText().equals(“5”)) b = 5; else if(btn.getText().equals(“6”)) b = 6; else if(btn.getText().equals(“7”)) b = 7; else if(btn.getText().equals(“8”)) b = 8; else if(btn.getText().equals(“9”)) b = 9; else if(btn.getText().equals(“0”)) b = 0; } } } class Arithmetic implements ActionListener { public void actionPerformed(ActionEvent e) { JButton btn = (JButton)e.getSource(); count = true; if(btn.getText().equals(“+”)) CalCase = 1; else if(btn.getText().equals(“-“)) CalCase = 2; else if(btn.getText().equals(“*”)) CalCase = 3; else if(btn.getText().equals(“/”)) CalCase = 4; } } class Equal implements ActionListener { public void actionPerformed(ActionEvent e) { if(CalCase==1) { total = Integer.toString(a+b); } else if(CalCase==2) { total = Integer.toString(a-b); } else if(CalCase==3) { total = Integer.toString(a*b); } else if(CalCase==4) { total = Integer.toString(a/b); } result.setText(total); } } class AllClear implements ActionListener { public void actionPerformed(ActionEvent e) { a = -1; b = -1; CalCase = 0; total = null; result.setText(“0”); count = false; } } }

보완해야 할 것

1. 배열을 이용해서 하면 좋을 것 같다.

2. JLabel 칸이 보이도록한다.

3. 다양한 기능 추가해보기 -> 공학용 계산기처럼

4. 이전에 계산했던 내용 저장 -> 다시 볼 수 있도록

5. 결과값에 계속해서 연산 가능하게

[GUI/Swing]자바 Swing을 이용한 계산기 프로그램

728×90

반응형

SMALL

– 자바 GUI/Swing 추가 설명링크 자바 GUI(Swing)를 응용한 프로그램 1 – https://blog.naver.com/sky881012/221324988185 자바 GUI(Swing)를 응용한 프로그램 2 – https://blog.naver.com/sky881012/221325015915

안녕하세요~ IT깡패’s입니다~

며칠전에 티스토리 초대장을 받고 티스토리 블로그 포스팅을 올리고 있습니다.

네이버블로그보다 상당히 편하고 좋네요~~ 그래서 네이버, 구글 둘 다 운영하려고 합니다~ㅎㅎ

아무튼 이번 포스팅은 자바 GUI/Swing을 이용해서 계산기 프로그램을 만들어보겠습니다~

다른 분들이 짠 계산기 코드를 참조해서 직접 제가 응용해보았습니다.

일단 GUI/Swing로 계산기를 만드려면 GUI/Swing으로 이것저것 기능이 들어간 틀이 필요한데, 저는 여러가지 틀과 함께 java소스파일을 3개로 나누어

만들었습니다.

자바 코드를 살펴보죠~~

CalGUI.java

package swingEtc; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.Panel; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.StringTokenizer; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JTextField; public class CalGUI extends JFrame implements ActionListener{ CalLogic c = new CalLogic(); //계산 객체 int check=-1,soch=0; @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String mun;//text받아오는역할 switch(e.getActionCommand()){ //getActionCommand() 버튼의 텍스트를 얻어옴 , getSource() 이벤트를 발생한 컴포넌트 얻기 case “0”: ch(“0”); break; case “1”: ch(“1”); break; case “2”: ch(“2”); break; case “3”: ch(“3”); break; case “4”: ch(“4”); break; case “5”: ch(“5”); break; case “6”: ch(“6”); break; case “7”: ch(“7”); break; case “8”: ch(“8”); break; case “9”: ch(“9”); break; //숫자만 두번째 텍스트까지 유지 case “←”: mun = jfsum.getText(); mun= mun.substring(0, mun.length()-1); jfsum.setText(mun); jf.setText(“”); break; case “x2”: mun = jfsum.getText(); StringTokenizer t = new StringTokenizer(mun, “+/*-“, true);// “+-*”구분값 String na = null; double re = 0; while (t.hasMoreTokens()) { String x1 = t.nextToken(); na = x1; } System.out.println(na); jfsum.setText(Double.parseDouble(na)*Double.parseDouble(na)+””); break; case “√”: mun = jfsum.getText(); StringTokenizer t1 = new StringTokenizer(mun, “+/*-“, true);// “+-*”구분값 String na1 = null; double re1 = 0; while (t1.hasMoreTokens()) { String x1 = t1.nextToken(); na1 = x1; } System.out.println(na1); jfsum.setText(Math.sqrt(Double.parseDouble(na1))+””); break; case “mc”: jf.setText(“”); jfsum.setText(“”); soch=0; //소수초기화 break; case “+”: jf.setText(“”); jfsum.setText(jfsum.getText()+”+”); break; case “-“: jf.setText(“”); jfsum.setText(jfsum.getText()+”-“); break; case “*”: jf.setText(“”); jfsum.setText(jfsum.getText()+”*”); break; case “/”: jf.setText(“”); jfsum.setText(jfsum.getText()+”/”); break; case “.”: soch=1;//소수계산 String str = jf.getText(); jf.setText(str+”.”); jfsum.setText(jfsum.getText()+”.”); break; case “=”: c.cal(jfsum.getText()); double result = c.cal(jfsum.getText()); if(soch==1) { jf.setText(result+””);//setText안에는 문자열이 들어가니까 jfsum.setText(result+””); } else { jf.setText((int)result+””);//setText안에는 문자열이 들어가니까 jfsum.setText((int)result+””); } check = 0; // =을 쓰고 나서는 초기화 break; } } JTextField jfsum,jf; String[] str = {“←”,”√”,”mc”,”x2″,”+”,”7″,”8″,”9″,”-“,”4″,”5″,”6″,”*”,”1″,”2″,”3″,”/”,”0″,”.”,”=”}; JButton[] b = new JButton[20]; JButton clear; Font jffont = new Font(“arian”, Font.BOLD, 40);//폰트 설정 Font bfont = new Font(“arian”, Font.BOLD, 20);//폰트 설정 CalGUI() { setTitle(“계산기”); //이름 setSize(500, 500); //크기 setLayout(new BorderLayout()); getContentPane().setBackground(Color.PINK);//뒷배경 판넬 //————메뉴바 만들기—————— JMenuBar mb= new JMenuBar(); JMenu menu1 = new JMenu(“보기(v)”); menu1.setMnemonic(‘v’); //단축키 사용 alt+v JMenuItem item1 = new JMenuItem(“Open”); item1.setMnemonic(‘o’); menu1.add(item1); JMenu menu2 = new JMenu(“도움말(H)”); menu2.setMnemonic(‘H’); JMenuItem item2 = new JMenuItem(“Help”); item2.setMnemonic(‘h’); menu2.add(item2); mb.add(menu1); mb.add(menu2); setJMenuBar(mb);//프레임에 menubar 붙이기 //————버튼 달기——————— //첫번째 패널 만들기 Panel tp = new Panel();//textField 판넬,첫번쨰 판넬 tp.setLayout(new GridLayout(2,1)); jfsum = new JTextField(getWidth()); jf = new JTextField(getWidth()); jf.setFont(jffont); jfsum.setHorizontalAlignment(JTextField.RIGHT); jf.setHorizontalAlignment(JTextField.RIGHT); jf.setEditable(false); tp.add(jfsum); tp.add(jf); //두번째 패널 만들기(버튼) Panel bp = new Panel(); bp.setLayout(new GridLayout(5,4)); for(int i=0;i<20;i++) { b[i]=new JButton(str[i]); b[i].addActionListener(this); b[i].setFont(bfont); bp.add(b[i]); } add(BorderLayout.NORTH,tp); //TextField panel을 Frame에 붙이기 add(BorderLayout.CENTER,bp); //버튼 panel을 Frame에 붙이기 //-------------프레임 위치------------------- Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((dim.width/2)-(getWidth()/2), (dim.height/2)-(getHeight()/2)); //중앙에 배치 //여기서 주의할점 getWidth()를 하는데 만약 setSize를 밑에줄에 적어주면 0으로 잡히기 떄문에 크기값을 위에서 잡아줄것. setResizable(false);//크기 고정 } public void ch(String a){ // = 이후인지 전인지 판별 , = 사용한다음 숫자를 누르면 바로 두번째 textField는 초기화 되어야함. if(check == 0) { jfsum.setText(jfsum.getText()+a); jf.setText(""+a); check=-1; } else { jf.setText(jf.getText()+a); jfsum.setText(jfsum.getText()+a); } } //C버튼은 계산기를 완전히 초기화시킵니다. 계산했던 내용을 모두 지웁니다. 다른 계산을 하기 전에는 계산기를 리셋하는 것이 좋습니다. //CE버튼은 모두 지우는 것이 아니라, 방금 전에 최종적으로 입력했던 숫자 1개만 지웁니다. 수식을 입력하다가 오타가 났을 때 지우는 버튼입니다. public static void main(String[] args) { // TODO Auto-generated constructor stub CalGUI c = new CalGUI(); c.setVisible(true); } } 계산기 틀이 전반적으로 틀이 들어간 코드입니다. 0~9까지의 글씨가 써진 버튼을 만들고 클릭하면 위에 텍스트 영역에 나타나게 됩니다. 그리고 +, -, =등 다양한 사칙연산 기능이 되게끔 만들었습니다. √를 누르면 제곱근도 계산하게 됩니다. 다음은 다른 세부 기능이 들어간 코드 두개를 살펴보겠습니다. Calculator.java package swingEtc; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class Calculator { private String[] delim = { "+", "-", "*", "/" , "(", ")" }; private Stack tokenStack = new Stack(); private Stack exprStack = new Stack(); private List postOrderList = new ArrayList(); private void makeTokens(String s) { StringBuffer tokenBuf = new StringBuffer(); int argSize = s.length(); String token = null; for(int i = 0; i < argSize; i++) { token = s.substring(i, i+1); if(!isDelim(token)) { tokenBuf.append(token); if(i == argSize - 1) { tokenStack.push(tokenBuf.toString()); } } else { if(tokenBuf.length() > 0) { tokenStack.push(tokenBuf.toString()); tokenBuf = new StringBuffer(); } tokenStack.push(token); } } } /** * 구분자인지 검사 * @param s * @return */ private boolean isDelim(String s) { boolean bDelim = false; int delimSize = delim.length; for(int i = 0; i < delimSize; i++) { if(delim[i].equals(s)) { bDelim = true; break; } } return bDelim; } /** * 연산자인지 검사 * @param s * @return */ private boolean isOpcode(String s) { boolean opcode = isDelim(s); if("(".equals(s) || ")".equals(s)) { opcode = false; } return opcode; } /** * PostOrder로 변환 * @param expr * @return */ private void convertPostOrder(String expr) { for(String token : tokenStack) { if(isDelim(token)) { exprAppend(token); } else { postOrderList.add(token); } } // exprStack에 자료가 남아 있으면 출력한다 String item = null; while(!exprStack.isEmpty()) { item = exprStack.pop(); postOrderList.add(item); } } /** * 연산자를 비교해서 postorder방식에 표시 할지 스택에 넣을지 확인 * @param postOrderBuf */ private void exprAppend(String token) { // '(' 일 경우 스택에 넣는다 if("(".equals(token)) { exprStack.push(token); return; } // ')' 일 경우 '('가 나올 때 까지 출력한다 if(")".equals(token)) { String opcode = null; while(true) { opcode = exprStack.pop(); if("(".equals(opcode)) { break; } postOrderList.add(opcode); } return; } // 연산자일 경우 스택에서 pop하여 낮은 우선순위를 만날때 까지 출력하고 자신을 push if(isOpcode(token)) { String opcode = null; while(true) { if(exprStack.isEmpty()) { exprStack.push(token); break; } opcode = exprStack.pop(); if(exprOrder(opcode) > exprOrder(token)) { postOrderList.add(opcode); } else { exprStack.push(opcode); exprStack.push(token); break; } } return; } } /** * 값을 계산한다 * @return */ public double calculate(String expr) { // 토근을 만든다 makeTokens(expr); // postOrder로 변환 convertPostOrder(expr); Stack calcStack = new Stack(); // postOrder 리스트의 값을 calcStack에 저장 for(String s : postOrderList) { calcStack.push(s); calcPostOrder(calcStack); } // 스택의 최종 값을 반환한다 double result = Double.parseDouble(calcStack.pop()); return result; } /** * 스택에서 pop연산을 하여 계산 가능하면 계산 후 값을 스택에 넣는다 * @param calcStack */ private void calcPostOrder(Stack calcStack) { // 연산자가 아니면 계산을 하지 않는다 if(!isOpcode(calcStack.lastElement())) { return; } // 3개를 꺼내야 하므로 3개 이상인지 검사 String op1 = null; String op2 = null; String opcode = null; if(calcStack.size() >= 3) { opcode = calcStack.pop(); op1 = calcStack.pop(); op2 = calcStack.pop(); // 값을 계산하여 스택에 넣는다 double result = calculateByOpCode(op1, op2, opcode); calcStack.push(Double.toString(result)); } } private double calculateByOpCode(String op1, String op2, String opcode) { double d1 = Double.parseDouble(op1); double d2 = Double.parseDouble(op2); double result = 0.0; if(“+”.equals(opcode)) { result = d2 + d1; } else if(“-“.equals(opcode)) { result = d2 – d1; } else if(“*”.equals(opcode)) { result = d2 * d1; } else if(“/”.equals(opcode)) { result = d2 / d1; } return result; } /** * 연산자 순위를 리턴한다 * @param s1 * @param s2 * @return */ public int exprOrder(String s) { int order = -1; if(“-“.equals(s) || “+”.equals(s)) { order = 0; } else if(“*”.equals(s) || “/”.equals(s)) { order = 1; } return order; } public static void main(String[] args) { Calculator cal = new Calculator(); System.out.println(cal.calculate(“1.2+11*4”)); } }

CalLogic.java

package swingEtc; import java.util.StringTokenizer; public class CalLogic { public double cal(String str) { StringTokenizer t = new StringTokenizer(str, “+-*/”, true); }

Calculator.java는 본격적인 계산기 프로그램의 기능코드고, 마지막 CalLogic.java는 자바 StringTokenizer함수를 사용한 코드입니다.

StringTokenizer함수란, String을 token단위로 끊어서 사용하는 함수입니다.

출력결과도 한번 살펴보시면 이해하기 쉬울것같네요~

그리고 연산을 막하다가 계산이 초과하면 Infinity가 뜨게 됩니다~

초과계산이죠~~

어느정도는 저런 단어가 안뜨게 되고 조정도가 넘어가면 뜨게 됩니다. 또 저기서 계산하게 되면 예외처리가 뜨면서 자바에 계속 메시지가 뜨게됩니다.

자바 계산기 코딩도 많이 알아둬야 되지만 StringTokenizer와 스택에 대해서도 공부해 두셔야 할 것 같네요~

모두모두 화이팅~!! 개발자분들도 화이팅~

728×90

반응형

LIST

키워드에 대한 정보 자바 gui 계산기

다음은 Bing에서 자바 gui 계산기 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 자바스윙 – 간단한 계산기 만들기

  • 자바
  • 자바 스윙
  • 프로그램
  • 자바 프로그램
  • 계산기 만들기
  • 기초 프로그램
  • 프로그램 만들기
  • 스윙 계산기
  • 자바 스윙 계산기
  • 자바 스윙 프로그램
  • 기초 프로그램 만들기
  • 자바를 통한 계산기
  • 계산기 프로그램
  • 코딩
  • coding

자바스윙 #- #간단한 #계산기 #만들기


YouTube에서 자바 gui 계산기 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 자바스윙 – 간단한 계산기 만들기 | 자바 gui 계산기, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  동산 추모 공원 | 동산추모공원 14249 명이 이 답변을 좋아했습니다

Leave a Comment