import java.awt.BorderLayout;
import java.awt.Color;
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 Calculator extends JFrame {
static boolean setF=false,nextN=false;
static double fistN,secN;
static int cc=0;//0기본
private JPanel panel;
private JTextField tField;
private JTextField tField2;//확인용
private JButton[] buttons;
private String[] labels=
{
"Backspace"," "," ","CE","C",
"7","8","9","/","sqrt",
"4","5","6","X","%",
"1","2","3","-","1/x",
"0","+/-",".","+","="
};
public Calculator()
{
setTitle("계산기");
tField = new JTextField(35);
tField2 = new JTextField(35);//확인용
panel = new JPanel();
tField.setText("0");
tField.setEnabled(false);
panel.setLayout(new GridLayout(0,5,3,3));
buttons = new JButton[25];
int index = 0;
for(int rows = 0;rows<5;rows++)
{
for(int cols = 0;cols<5;cols++)
{
buttons[index] = new JButton(labels[index]);
if(cols>=3)
buttons[index].setForeground(Color.red);
else
buttons[index].setForeground(Color.blue);
buttons[index].setBackground(Color.yellow);
buttons[index].addActionListener(new NL());
panel.add(buttons[index]);
index++;
}
}
add(tField,BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
add(tField2,BorderLayout.SOUTH);
setVisible(true);
pack();
}
private class NL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==buttons[0]) //backspace
{
if(tField.getText().length()==0);
else
tField.setText(tField.getText().substring(0,tField.getText().length()-1));
};
if(e.getSource()==buttons[9])//sqrt
{
tField.setText(Double.toString(Math.sqrt(Double.parseDouble(tField.getText()))));
};
if(e.getSource()==buttons[22])//.(도트)
{
if(!setF)
{
if(tField.getText().length()==0)
tField.setText(tField.getText()+"0.");
else
tField.setText(tField.getText()+".");
};
setF=true;
cc++;
};
if(e.getSource()==buttons[23])//+
{
};
if(e.getSource()==buttons[24])//=
{
};
for(int x=1;x<5;x++)
for(int y=0;y<3;y++)
{
if(e.getSource()==buttons[x*5+y])
{
tField.setText(tField.getText() + buttons[x*5+y].getText());
};
if (x==5)
break;
};
tField2.setText("firstN "+fistN+" secN "+secN+" setF "+setF+" nextN "+nextN+" cc "+cc);//확인용
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculator s = new Calculator();
}
}
//.(도트)
주석이 달린게 문제인데
if문을 무시하고 둘다 실행되기도 하고
. 한번 붙이고 나면 실행안되게 조건 붙여놨는데도
게속 버튼 누를때마다 실행되네요..
EX) 0.->0......
도와주세요 ㅠㅠ
과제하는데 막혀서 힘드네요..
댓글 0