여기까지 만든거구요. 문제중 못하고 있는게... 아래부분입니다.
**********************************************************
제곱(x^2),삼각함수 계산(sin,cos,tan) 이벤트 하는거랑요.
연산 버튼 클릭 후 =으로 결과값 출력후..
다시 숫자 버튼 클릭할 경우 화면 클리어 되게 하는거요.
**********************************************************
현재까지 만든코팅부분입니다.
매소드 함수 쓰로고 하느데 어떻게 써야할지 모르곘네여. ㅜㅜ
./to 로되어있는부분은 /뺴주시면 되요. 헝글 게시판이 ./to 에서 /뺀면 금지단어라 /임의로 넣은것입니다.
================================================================================
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Calculator extends JFrame implements ActionListener{ // ActionListener 포함
public JTextField resultText;
public JButton buttonArray[];
public JPanel buttonGroup;
public JButton clearButton;
public JButton exitButton;
public double result=0; // 결과 값
public boolean clearText=true;
public int previousEventName=0; // 이전 연산자 이벤트 정보
public Calculator(String title){
clearButton = new JButton("Clear");
exitButton = new JButton("종료하기");
// 결과 표시
resultText = new JTextField(50);
setLayout(new BorderLayout());
resultText.setEditable(false);
// 버튼 구성
buttonGroup = new JPanel();
buttonArray = new JButton[20];
// 버튼 생성
for (int i = 0; i <= 9; i++)
{
buttonArray [i]= new JButton(Integer./toString(i));
}
buttonArray[10] = new JButton("/");
buttonArray[11] = new JButton("*");
buttonArray[12] = new JButton("-");
buttonArray[13] = new JButton("+");
buttonArray[14] = new JButton(".");
buttonArray[15] = new JButton("x^2");
buttonArray[16] = new JButton("sin");
buttonArray[17] = new JButton("cos");
buttonArray[18] = new JButton("tan");
buttonArray[19] = new JButton("=");
buttonGroup.setLayout(new GridLayout(4,5));
for( int i = 7; i <= 10; i++)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[16]);
for( int i = 4; i <= 6; i++)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[11]);
buttonGroup.add(buttonArray[17]);
for( int i = 1; i <= 3; i++)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[12]);
buttonGroup.add(buttonArray[18]);
buttonGroup.add(buttonArray[0]);
for( int i = 15; i >= 13; i--)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[19]);
;
add(resultText, BorderLayout.NORTH);
add(buttonGroup, BorderLayout.CENTER);
add(clearButton, BorderLayout.EAST);
add(exitButton, BorderLayout.SOUTH);
// 메뉴 구성
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("File");
JMenu editMenu = new JMenu("Edit");
menuBar.add(fileMenu);
menuBar.add(editMenu);
// 풀다운 메뉴 추가
JMenuItem newMenuItem = fileMenu.add("New");
fileMenu.addSeparator();
JMenuItem openMenuItem = fileMenu.add("Open");
fileMenu.addSeparator();
JMenuItem exitMenuItem = fileMenu.add("Exit");
JMenuItem cutMenuItem = editMenu.add("Cut");
editMenu.addSeparator();
JMenuItem clearMenuItem = editMenu.add("ClearM");
// 이벤트 등록
for ( int i = 0; i < buttonArray.length; i++)
{
buttonArray[i].addActionListener(this);
}
clearButton.addActionListener(this);
exitButton.addActionListener(this);
clearMenuItem.addActionListener(this); // 메뉴 이벤트 등록
exitMenuItem.addActionListener(this);
setTitle(title);
setSize(700,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String eventName="";
String command=e.getActionCommand();
int numberButton=0;
eventName=e.getActionCommand(); // getSource()
if(command.equals("종료하기") | command.equals("Exit")){
System.exit(0);
}
else if(eventName == "Clear" | eventName == "ClearM"){ // Clear 버튼 및 메뉴의 ClearM
resultText.setText("");
}
else if(eventName == "."){ // . 버튼 이벤트인 경우
resultText.setText(resultText.getText() + eventName);
}
else if(eventName == "/"){// / 버튼 이벤트인 경우
result = Double.valueOf(resultText.getText());
previousEventName=10; // 나누기
clearText=true;
}
else if(eventName == "*"){// * 버튼 이벤트인 경우
result = Double.valueOf(resultText.getText());
previousEventName=20; // 곱하기
clearText=true;
}
else if(eventName == "+"){
result = Double.valueOf(resultText.getText());
previousEventName=30;
clearText=true;
}
else if(eventName == "-"){
result = Double.valueOf(resultText.getText());
previousEventName=40;
clearText=true;
}
else if(eventName == "="){ // = 버튼 이벤트인 경우
switch(previousEventName){
case 10: // 나누기
result /= Double.valueOf(resultText.getText());
break;
case 20:// 곱하기
result *= Double.valueOf(resultText.getText());
break;
case 30:
result += Double.valueOf(resultText.getText());
break;
case 40:
result -= Double.valueOf(resultText.getText());
break;
}
resultText.setText(Double./toString(result));
}
else{ // 숫자 버튼 이벤트
numberButton=Integer.parseInt(eventName);
switch(numberButton){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
if(clearText){ // 연산자 버튼 입력 했을 경우 화면 삭제
resultText.setText("");
clearText=false;
}
resultText.setText(resultText.getText() + numberButton);
break;
}
}
}
}
public class JavaCalcu {
public static void main(String[] args){
new Calculator("계산기");
}
}
======================================================================
pow, sin, cos, tan 등의 함수는 java.lang.Math 에 있습니다.
pow(x,y) x the base of the operation.
y the exponent of the operation
3의 제곱은 pow(3,2) 가 되겠네요.