ÇÁ·Î±×·¡¹Ö

 3206, 2/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   daze1234
   ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö °è»ê±â ÇÁ·Î±×·¥ Áú¹®µå¸³´Ï´Ù.

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=6589 [º¹»ç]


ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ¸·Î ¾ÆÁÖ °£´ÜÇÏ°í ½ÉÇÃÇÑ °è»ê±â¸¦ ¸¸µé°íÀÚ ÇÕ´Ï´Ù.

ÀÚ¹Ù¿¡ Àü¹®ÀûÀÎ Áö½ÄÀÌ ÀÖ´Â°Ç ¾Æ´Ï¿À¸ç ÄÚµå ÀÛ¼ºÀ» Àß ÇÒ¼ö ¾ø¾î¼­ µµ¿òÀ» ¹Þ°í°¡ ±ÛÀ» ÀÛ¼ºÇÏ°Ô µÇ¾ú½À´Ï´Ù.

ºÎŹµå¸³´Ï´Ù..

  Hit : 4492     Date : 2017/10/27 12:30



    
lwlstjdl ±¸±Û¸µ¿¡¼­ °Ë»öÇÏ½Ã¸é ¼Ò½ºÄÚµå ¸¹ÀÌ ³ª¿À´Âµ¥ ±×°Å º¸½Ã¸é µÉ°Í °°¾Æ¿ä. 2017/11/27  
ÇѽÂÀç import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.math.BigDecimal;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

//==========================
// Swing °è»ê±â
// @Author ¿ø°­¹Î
//==========================
public class JCalculator
{
private JFrame frame;
private ActionListener btnClickListener;

/** °á°ú°ª º¯¼ö */
private BigDecimal resultValue;

/** ÇöÀç ÀÔ·ÂµÈ °ªÀ» ÀúÀåÇØ ³õ´Â º¯¼ö */
private BigDecimal memoryValue;

/** ±âÁ¸ Ç¥±âµÈ ³»¿ëÀ» Áö¿ì°í »õ·Î ÀÔ·ÂÇÒÁö ¿©ºÎ */
private Boolean isNewValue;

/** ÇöÀç ¼±ÅÃµÈ ¿¬»ê ¹öÆ° */
private JButton selectedOperBtn;

private static final String divideErrorText = "0À¸·Î ³ª´­ ¼ö ¾ø½À´Ï´Ù.";

private Font buttonFont;
private Container container;
private JTextField txt;
private JLabel mLabel;
private JButton plusBtn;
private JButton minusBtn;
private JButton multBtn;
private JButton divBtn;
private JButton enterBtn;

//=============================
//
// Start Point
//
//=============================

public void create()
{
this.init();
this.createUI();
this.setEventListener();
}

//=============================
//
// Private Methods
//
//=============================

/** ÃʱâÈ­ */
private void init()
{
this.buttonFont = new Font("Arial", 0, 16);

this.resultValue = new BigDecimal(0);
this.memoryValue = new BigDecimal(0);
this.selectedOperBtn = null;
this.isNewValue = true;

// ¹öÆ° Ŭ¸¯ ¸®½º³Ê
this.btnClickListener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String txtValue = txt.getText();

JButton b = (JButton) e.getSource();
String _name = b.getText();
switch(_name)
{
case "M+":
if(txtValue.equals(divideErrorText)) return;

mLabel.setVisible(true);
memoryValue = memoryValue.add(new BigDecimal(Float.valueOf(txtValue)));
isNewValue = true;
break;

case "M-":
if(txtValue.equals(divideErrorText)) return;

mLabel.setVisible(true);
memoryValue = memoryValue.subtract(new BigDecimal(Float.valueOf(txtValue)));
isNewValue = true;
break;

case "MR":
Float f = memoryValue.floatValue();
Integer i = memoryValue.intValue();
if(f.equals(Float.valueOf(i))) txt.setText(String.valueOf(i));
else txt.setText(String.valueOf(f));
isNewValue = true;
break;

case "MC":
mLabel.setVisible(false);
memoryValue = new BigDecimal(0);
isNewValue = true;
break;

case "/":
case "*":
case "+":
case "-":
inputOperate(b);
break;

case "¡ç":
inputBackspace();
break;

case "¡î":
calculateSquareRoot();
break;

case "=":
inputEnter();
break;

case "C":
inputEscape();
break;

default:
pressNumberPad(_name);
break;
}
}
};
}

/** UI »ý¼º */
private void createUI()
{
frame = new JFrame("JButton Test");

container = new Container();
frame.getContentPane().add(container);

this.mLabel = new JLabel();
this.mLabel.setText("M");
this.mLabel.setBounds(5, 12, 20, 20);
this.mLabel.setVisible(false);
container.add(this.mLabel);

// result text field
txt = new JTextField();
txt.setBorder(null);
txt.setText("0");
txt.setHorizontalAlignment(JTextField.RIGHT);
txt.setBounds(25, 0, 215, 40);
txt.setFocusable(false);
txt.setEditable(false);
container.add(txt);

// functions for memory
int _scaleNum = 60;

createButton("MC", 0, 40, _scaleNum, 40);
createButton("MR", _scaleNum + 6, 40, _scaleNum, 40);
createButton("M+", _scaleNum * 2 + 12, 40, _scaleNum, 40);
createButton("M-", _scaleNum * 3 + 18, 40, _scaleNum, 40);

// number
ArrayList<Character> types = new ArrayList<Character>();
types.add('7'); types.add('8'); types.add('9');
types.add('4'); types.add('5'); types.add('6');
types.add('1'); types.add('2'); types.add('3');
types.add('0'); types.add('.'); types.add('C');

for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 3; j++)
{
String _name = String.valueOf(types.remove(0));

createButton(_name, 9 + j * _scaleNum, 130 + (i * _scaleNum), _scaleNum, _scaleNum);
}
}

// operator
divBtn = createButton("/", 0, 80, _scaleNum, 43);
multBtn = createButton("*", _scaleNum + 6, 80, _scaleNum, 43);
minusBtn = createButton("-", _scaleNum * 2 + 12, 80, _scaleNum, 43);
plusBtn = createButton("+", _scaleNum * 3 + 18, 80, _scaleNum, 43);
enterBtn = createButton("=", _scaleNum * 3 + 18, 246, _scaleNum, 124);
createButton("¡ç", _scaleNum * 3 + 18, 123 + 6, _scaleNum, 55);
createButton("¡î", _scaleNum * 3 + 18, 178 + 10, _scaleNum, 55);

frame.pack();
frame.setSize(274,408);
frame.setVisible(true);
}

/** ¹öÆ° »ý¼º */
private JButton createButton(String name, int x, int y, int width, int height)
{
JButton btn = new JButton(name);
btn.setName(name);
btn.setBounds(x, y, width, height);
btn.setFocusable(false);
btn.setFont(this.buttonFont);
btn.addActionListener(this.btnClickListener);
this.container.add(btn);

return btn;
}

/** À̺¥Æ® ¸®½º³Ê ¼³Á¤ */
private void setEventListener()
{
this.frame.addKeyListener(new KeyListener()
{
@Override
public void keyTyped(KeyEvent e)
{
Integer code = Integer.valueOf(e.getKeyChar());

if(code >= 48 && code <= 57) pressNumberPad(String.valueOf(e.getKeyChar()));
else if(code == 43) inputOperate(plusBtn);
else if(code == 45) inputOperate(minusBtn);
else if(code == 42) inputOperate(multBtn);
else if(code == 47) inputOperate(divBtn);
else if(code == 10) inputEnter();// Enter(=Return)
else if(code == 27) inputEscape();// Esc
else if(code == 8) inputBackspace();// Backspace
}

@Override
public void keyReleased(KeyEvent e) {}

@Override
public void keyPressed(KeyEvent e) {}
});
}

/** Å°Æеå ÀÔ·Â */
private void pressNumberPad(String numStr)
{
String txtValue = txt.getText();

if(isNewValue == true)
{
if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.red);
txt.setText("");
isNewValue = false;
}

txtValue = txt.getText();
if(txtValue.equals("0"))
{
txt.setText("");
txtValue = "";
}
txt.setText(txtValue + numStr);

// Àû¿ë ÈÄ »õ·Î¿î value
if(txt.getText().equals(".")) txt.setText("0.");
}

/** ¿¬»êÀÚ ÀÔ·Â */
private void inputOperate(JButton b)
{
String txtValue = txt.getText();

if(txtValue.equals(divideErrorText)) return;

if(isNewValue == false) calculate();

if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.black);
b.setForeground(Color.red);
selectedOperBtn = b;
}

/** Square Root °è»ê */
private void calculateSquareRoot()
{
Float fValue = Float.valueOf(txt.getText());

BigDecimal tmp = new BigDecimal(Math.sqrt(fValue));

Float f = tmp.floatValue();
Integer i = tmp.intValue();
if(f.equals(Float.valueOf(i))) txt.setText(String.valueOf(i));
else txt.setText(String.valueOf(f));

this.isNewValue = true;
}

/** ¿£ÅÍ ÀÔ·Â (°á°ú °è»ê) */
private void inputEnter()
{
String txtValue = txt.getText();

if(txtValue.equals(divideErrorText)) return;

calculate();
if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.black);
}

/** Esc ÀÔ·Â (ÃʱâÈ­) */
private void inputEscape()
{
txt.setText("0");
resultValue = new BigDecimal(0);

if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.black);
selectedOperBtn = null;
}

/** ¹é½ºÆäÀ̽º ÀÔ·Â (¸¶Áö¸· ÀԷ°ª »èÁ¦) */
private void inputBackspace()
{
String txtValue = txt.getText();
txt.setText(txtValue.substring(0, txtValue.length() - 1));
if(txt.getText().equals("")) txt.setText("0");
}

/** °è»êÇϱâ */
private void calculate()
{
Float fValue = Float.valueOf(txt.getText());

if(selectedOperBtn == null)
{
resultValue = new BigDecimal(fValue);
isNewValue = true;
return;
}

switch(selectedOperBtn.getName())
{
case "/":
if(txt.getText().equals("0") || txt.getText().equals("0."))
{
this.txt.setText(this.divideErrorText );
if(this.selectedOperBtn != null) this.selectedOperBtn.setForeground(Color.black);
this.selectedOperBtn = null;
this.isNewValue = true;
this.resultValue = new BigDecimal(0);
return;
}
resultValue = resultValue.divide(new BigDecimal(fValue));
break;

case "*":
resultValue = resultValue.multiply(new BigDecimal(fValue));
break;

case "+":
resultValue = resultValue.add(new BigDecimal(fValue));
break;

case "-":
resultValue = resultValue.subtract(new BigDecimal(fValue));
break;
}

Float f = resultValue.floatValue();
Integer i = resultValue.intValue();
if(f.equals(Float.valueOf(i))) txt.setText(String.valueOf(i));
else txt.setText(String.valueOf(f));

isNewValue = true;
}

/** Äֿܼ¡ Ãâ·ÂÇϱâ */
private void trace(String value)
{
System.out.println(value);
}

/** main ÇÔ¼ö */
public static void main(String[] args)
{
new JCalculator().create();
}
}



ÆÛ ¿Ô½À´Ï´Ù

Ãâó : https://blog.wonhada.com/?p=840
2017/12/25  
3186     [re] c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.     dafher
05/13 1573
3185   c¾ð¾î ¼Ò½º Áú¹® ¹¹°¡ ¹®Á¦ÀÎÁö¤Ì¤Ì¤Ì¤Ì[2]     sjjh96
05/23 4254
3184   ÆÄÀ̽ã Ŭ·¡½º °øºÎÁß Áú¹®[1]     wnsdud5534
04/12 3461
3183   dll ÀÎÁ§¼Ç Å°º¸µå ÈÄÅ·(win32api)[1]     healer
03/11 3292
3182   C++ ÇÔ¼ö ¿À¹ö·Îµù ¿À·ù Áú¹®ÀÔ´Ï´Ù. [1]     sweetick
03/04 5496
3181   Æ÷ÀÎÅÍ¿¡ ¸Þ¸ð¸®¸¦ Á÷Á¢ ³Ö´Â°Ô °¡´ÉÇÒ±î¿ä??[3]     ljs0652
01/24 2213
3180   File Descriptor °ü·Ã Áú¹®ÀÔ´Ï´Ù.     tjdalstjr938
01/22 2019
3179   C¾ð¾î [2]     rhdbrkd2
01/02 2653
3178   C¾ð¾î °øºÎ¸¦ ÇÏ·Á°í Çϴµ¥...[3]     rhdbrkd2
12/15 3540
3177   c¾ð¾î ±¸Á¶Ã¼ ¹è¿­ Æ÷ÀÎÅÍ·Î ÇÔ¼ö·Î Àü´ÞÇϴµ¥...[3]     my10045139
12/13 6071
3176   ÇÙ¸Ç ÄÚµå Áú¹®     yyy3399
12/09 3132
3175   ÀÚ¹Ù ±âÃÊ Ã¥, ¾Û ±âÃÊ Ã¥, ¾Û º¸¾È Ã¥ (3°¡Áö À¯¸íÇÑ Ã¥Á» Ãßõ¹Ù¶ø´Ï´Ù.)[1]     viewstar
11/26 3479
  ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö °è»ê±â ÇÁ·Î±×·¥ Áú¹®µå¸³´Ï´Ù.[2]     daze1234
10/27 4491
3173   ÆÄÀ̽ã: ÆĽºÄ®ÀÇ »ï°¢Çü[1]     sunnykim97
10/14 3888
3172   visual studio 2017 c++ ÄÄÆÄÀÏ ¿¡·¯³µ´Âµ¥ ÇØ°á¹æ¹ýÀ» ¸ð¸£°Ú¾î¿ä¤Ð¤Ð     93jmj
10/13 3181
3171   ÇÑ ÇÁ·Î±×·¥ ³» ¼ÒÄÏ 2°³[1]     ysl1121
09/19 3883
3170   C¾ð¾î(¿­Ç÷C) ¿¹Á¦Ç®ÀÌÁß ¾ÈÇ®·Á¼­ Áú¹®µå·Á¿ä ¤Ð¤Ð[5]     ijs2you
08/28 3615
3169   c°øºÎ ½ÃÀÛÇߴµ¥ ¿¹Á¦¸¶´Ù »õ·Î¿î ¼Ò½ºÆÄÀÏ Ãß°¡ÇؾßÇϳª¿ä?[5]     Newbiee
05/10 2977
3168   ÆÄÀ̽ã Äڵ尡 ¹¹°¡¹®Á¦ÀÎÁö ¤Ð¤Ð[1]     zero1
04/29 3308
3167   ÁÖ¾îÁø ¹®Á¦¶û ÄÚµåÀÛ¼ºµÈ°Å¶û ¸Â´ÂÁöºÁÁÖ¼¼¿ä..     lia9173
04/05 2569
[1] 2 [3][4][5][6][7][8][9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org