まだ問題がある
・=を押した後pushEqual=trueなのにif文のなかのボタンが有効な問題
・数字ボタンの処理がまぬすぎる forで?
package application;
import javafx. application.Application;
import javafx.event.ActionEvent;
import javafx. scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.scene.layout.TilePane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx. stage.Stage;
public class Calculator_from_EXE3115 extends Application {
int kigou =0;//何の記号がおされたか。1は+,2は-,3は*,4は/
double hogenum;//数字を格納
String hogestr;//入力中の数字文字を格納
boolean pushEqual;//=キーが押されたかどうか
boolean pushDot = false;//小数点がおされたかどうか
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage myStage) {
TextField tf1 = new TextField("");
//ここはひらさわさんのをこぴった
//数字キーボタンを配列に入れる
ToggleGroup group1 = new ToggleGroup();
ToggleButton[] tbNum = new ToggleButton[10];
for(int i=0; i<10; i++) {
//tbNum[i] = new ToggleButton("\t" + i + "\t");
tbNum[i] = new ToggleButton(i+"");
tbNum[i].setToggleGroup(group1);
tbNum[i].setUserData(i); // データをセット
tbNum[i].setFont( Font.font("meiryo",15) );
tbNum[i].setPrefWidth(100);
tbNum[i].setPrefHeight(50);
if(i%2==0) {
tbNum[i].setStyle("-fx-background-color:red; -fx-text-fill:black; -fx-border-color:#555;");
}else {
tbNum[i].setStyle("-fx-background-color:white; -fx-text-fill:black; -fx-border-color:#555;");
}
}
//記号
String[] calcArray = {"","=", "AC", "+", "-", "*", "/", "."};
ToggleGroup group2 = new ToggleGroup();
ToggleButton[] tbOpe = new ToggleButton[calcArray.length];
for(int i=0; i<calcArray.length; i++) {
//tbOpe[i] = new ToggleButton("\t" + calcArray[i] + "\t");
tbOpe[i] = new ToggleButton(calcArray[i]+"");
tbOpe[i].setToggleGroup(group2);
tbOpe[i].setUserData(calcArray[i]); // データをセット
tbOpe[i].setFont( Font.font("meiryo",15) );
tbOpe[i].setPrefWidth(100);
tbOpe[i].setPrefHeight(50);
tbOpe[i].setStyle("-fx-background-color:#4287f5; -fx-text-fill:black; -fx-border-color:#555;");
}
//------------
//pane
//------------
HBox pane2 = new HBox();
pane2.getChildren().addAll(tf1);
HBox pane3 = new HBox();
pane3.getChildren().addAll(tbOpe[2]);//ACボタン
TilePane pane5 = new TilePane();
pane5.getChildren().addAll(tbNum[7],tbNum[8],tbNum[9],tbOpe[6],tbNum[4],tbNum[5],tbNum[6],tbOpe[5],tbNum[1],tbNum[2],tbNum[3],tbOpe[4],tbNum[0],tbOpe[7],tbOpe[1],tbOpe[3]);
VBox pane = new VBox();
pane.getChildren().addAll(pane2,pane3,pane5);
pane.setStyle("-fx-background-color:#deebff;");
//------------
//各種ボタン
//------------
//数字
if(pushEqual==false) {
tbNum[0].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"0");
});
tbNum[1].setOnAction((ActionEvent event)->{
System.out.println("pushEqual is "+pushEqual);
hogestr =tf1.getText();
tf1.setText(hogestr+"1");
});
tbNum[2].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"2");
});
tbNum[3].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"3");
});
tbNum[4].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"4");
});
tbNum[5].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"5");
});
tbNum[6].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"6");
});
tbNum[7].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"7");
});
tbNum[8].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"8");
});
tbNum[9].setOnAction((ActionEvent event)->{
hogestr =tf1.getText();
tf1.setText(hogestr+"9");
});
//小数点
tbOpe[7].setOnAction((ActionEvent event)->{
if(pushDot==false) {//小数点は2回押せないように
hogestr =tf1.getText();
tf1.setText(hogestr+".");
pushDot=true;
System.out.println("pushDotはいま"+pushDot);
}
});
}else {
System.out.println("pushEqualにつきfalse");
}
//=ボタン
tbOpe[1].setOnAction((ActionEvent event)->{
hogenum =calc(tf1.getText(),kigou);
tf1.setText("計算結果は"+hogenum);
pushEqual=true;
System.out.println("pushEqualはいま"+pushEqual);
});
//+ボタン
tbOpe[3].setOnAction((ActionEvent event)->{
hogenum =calc(tf1.getText(),kigou);
tf1.setText("");
kigou=1;//最後に押された記号は足す
});
//-ボタン
tbOpe[4].setOnAction((ActionEvent event)->{
hogenum =calc(tf1.getText(),kigou);
tf1.setText("");
kigou=2;//最後に押された記号はひく
});
//*ボタン
tbOpe[5].setOnAction((ActionEvent event)->{
hogenum =calc(tf1.getText(),kigou);
tf1.setText("");
kigou=3;//最後に押された記号はかける
});
//わるボタン
tbOpe[6].setOnAction((ActionEvent event)->{
hogenum =calc(tf1.getText(),kigou);
tf1.setText("");
kigou=4;//最後に押された記号はわる
});
//ACボタン
tbOpe[2].setOnAction((ActionEvent event)->{
tf1.setText("");
//l1.setText("");
hogenum=0;
hogestr="";
kigou=0;
pushEqual=false;
pushDot=false;
});
Scene scene = new Scene(pane,400,300);//シーンのサイズ
myStage.setTitle("電子計算機");
myStage.setScene(scene);
myStage.show();
}
/*--- 関数 ---*/
public double calc(String tf1,int kigou) {
System.out.println("here is in funcion calc");
if (kigou==0) {
hogenum = hogenum + Double.parseDouble(tf1);
}else if (kigou==1) {
hogenum = hogenum + Double.parseDouble(tf1);
}else if(kigou==2) {
hogenum = hogenum - Double.parseDouble(tf1);
}else if(kigou==3) {
hogenum = hogenum * Double.parseDouble(tf1);
}else if(kigou==4) {
hogenum = hogenum * Double.parseDouble(tf1);
}
pushDot=false;
System.out.println("hogenumはいま"+hogenum);
System.out.println("kigouはいま"+kigou);
System.out.println("pushDotはいま"+pushDot);
return hogenum;
}
}