实现目标
如上,实现一个这样的计算器的功能
代码结构
全部代码
一个Main类
package ComputerTest;
import java.util.LinkedList;
import javafx.application.Application;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class Main extends Application {
private String logic;//存运算符的变量 null
private TextField view;
private String out="";
public void start(Stage primaryStage) {
try {
AnchorPane root = new AnchorPane();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setWidth(300);
primaryStage.setHeight(420);
primaryStage.setResizable(false);
addComp(root);
primaryStage.getIcons().add(new Image("ComputerTest/computer.png", 256, 256, true, true));
primaryStage.setTitle("Calculator");
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
//添加组件的方法
private void addComp(AnchorPane root) {
//添加显示框
view = new TextField("0");
view.setMinSize(280, 50);
view.setLayoutX(10);
view.setLayoutY(15);
//设置只读
view.setEditable(false);
//内容右对齐
view.setAlignment(Pos.CENTER_RIGHT);
//设置字体
view.setFont(new Font("华文琥珀", 20));
root.getChildren().add(view);
//添加一个表格布局
GridPane gridPane = new GridPane();
//设置布局中元素组件横向间距
gridPane.setHgap(1);
//设置布局中元素组件纵向间距
gridPane.setVgap(1);
gridPane.setLayoutY(65);
gridPane.setPrefWidth(290);
gridPane.setPrefHeight(300);
gridPane.setPadding(new Insets(10));
//列容器
root.getChildren().add(gridPane);
//创建数字监听器对象
NumberEvent numberEvent = new NumberEvent();
//添加按钮
Button btn_7 = new MyButton("7");
btn_7.setOnMouseClicked(numberEvent);
gridPane.add(btn_7,0,1);
Button btn_8 = new MyButton("8");
btn_8.setOnMouseClicked(