JavaFx开发一个简单的计算器

最近比较无聊看了下JavaFx然后决定写一个简单的计算器,废多看蹦!

1、先下载一个JavaFX Scene Builder 2.0.exe  这个东西直接百度就下。

2、打开idea配置JavaFx如图

JavaFx开发一个简单的计算器_第1张图片

3、创建项目JavaFx

JavaFx开发一个简单的计算器_第2张图片

4、启动类

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.util.LinkedList;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("calculator.fxml"));
        primaryStage.setTitle("简单计算器");
        primaryStage.setScene(new Scene(root, 257, 361));
        primaryStage.show();

    }


    public static void main(String[] args) {
      launch(args);


    }
}

5、计算器控制器

package sample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;

import java.math.BigDecimal;
import java.net.URL;
import java.util.LinkedList;
import java.util.ResourceBundle;
import java.util.regex.Pattern;

public class Calculator implements Initializable {


    @FXML
    private TextField result;

    private LinkedList numbers=new LinkedList();

    private LinkedList yunsuanfu=new LinkedList<>();

    private BigDecimal bigDecimal;
    Pattern pattern=Pattern.compile("\\d+|\\d.?\\d");

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }


    public void pressNumberButton(ActionEvent event){
        String number = getButtonValue(event);
        String textResult = result.getText();
        if(".".equals(number.trim())){
            boolean contains = textResult.contains(".");
            if(contains||isBlank(textResult)){
                return;
            }else {
                result.setText(textResult+".");
                return;
            }
        }
        result.setText(result.getText()+number);
    }


    public void pressYunsuanfu(ActionEvent event){
        String text = result.getText();

        if (!pattern.matcher(text).matches()) {
            return;
        }
        if (isBlank(text)){
            return;
        }
        numbers.add(text);
        String buttonValue = getButtonValue(event);
        yunsuanfu.add(buttonValue);
        result.setText("");
    }



    public void pressDengyu(ActionEvent event) {
        boolean numbersEmpty = numbers.isEmpty();
        boolean yunsuanfuEmpty = yunsuanfu.isEmpty();
        if(numbersEmpty||yunsuanfuEmpty){
            result.setText(result.getText());
            return;
        }

        if(numbers.size()>0){
            numbers.add(result.getText());
            bigDecimal=new BigDecimal(numbers.getFirst());
            for (int i=1;i0){
            text=text.substring(0,text.length()-1);
            result.setText(text);
        }
    }


    private String getButtonValue(ActionEvent event){
        Button button = (Button)event.getSource();
        return button.getText();
    }

    private boolean isBlank(String text){
        if(text!=null&&text!=""&&text.length()>0){
            return false;
        }
        return true;
    }

}

6、计算器页面布局,新建一个FXML的文件,然后右键用JavaFX Scene Builder 2.0.exe这个打开编辑,直接拖动组件就行。










   
      
      

7、然后运行

JavaFx开发一个简单的计算器_第3张图片

你可能感兴趣的:(JavaFx开发一个简单的计算器)