一桁電卓(setText)
//<applet code="Calc.class" width="250" height="150" ></applet>
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calc extends JApplet implements ActionListener{
JTextField display;
int row=4,column=4,value=0,d;
char str,str2;
JButton[][] button=new JButton[row][column];
String[][] buttonName={{"7","8","9","/"},
{"4","5","6","*"},
{"1","2","3","-"},
{"0","C","=","+"}};
public void init(){
Container pane=getContentPane();
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(4,4));
display=new JTextField(String.valueOf(value));
pane.add(display);
display.setHorizontalAlignment(JTextField.RIGHT);
display.setEditable(false);
for(int a=0;a<row;a++){
for(int b=0;b<column;b++){
button[a][b]=new JButton(buttonName[a][b]);
panel.add(button[a][b]);
button[a][b].addActionListener(this);
}
}
pane.add(panel,BorderLayout.SOUTH);
}
public void setText(int c){
if(str2!='/'&&str2!='*'&&str2!='-'&&str2!='+'){
value=c;
}
else if(str=='='){
display.setText(String.valueOf(value));
}
if(str!='/'&&str!='*'&&str!='-'&&str!='+'&&str!='='){
display.setText(String.valueOf(c));
if(str2=='/')value=value/c;
if(str2=='*')value=value*c;
if(str2=='-')value=value-c;
if(str2=='+')value=value+c;
}
else{
display.setText(String.valueOf(value));
if(str2=='/')value=value/c;
if(str2=='*')value=value*c;
if(str2=='-')value=value-c;
if(str2=='+')value=value+c;
}
}
public void actionPerformed(ActionEvent e){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(e.getSource()==button[i][j]){
str=buttonName[i][j].charAt(0);
switch(str){
case '/':
str2=str;
setText(1);
break;
case '*':
str2=str;
setText(1);
break;
case '-':
str2=str;
setText(0);
break;
case '+':
str2=str;
setText(0);
break;
case '=':
setText(d);
break;
case 'C':
str2=str;
value=0;
setText(value);
break;
default:
d=Integer.parseInt(buttonName[i][j]);
setText(d);
break;
}
}
}
}
}
}
上のプログラムは一桁電卓です。
プログラムは思ったように動くんですが、
seText(0、または1)の部分がどういう役目を果たしているか、0と1でどう違ってくるのかが分かりません。できればsetText(char)の説明も交えて教えていただけませんか?