0

JavaFx Kullanarak Hesap Makinası Yapma

Merhaba arkadaşlar öyle otururken aklıma geldi birden ciddi ciddi iş uzayıverdi bende yaptıktan sonra madem bitireyim bir köşede örnek olarak dursun dedim ne de olsa öğrencilerimiz için örnek gerekli oluyor. Bu örnek aslında bakanlar için basit olabilir ama bir çok bilgiyi bir arada kullanmak açısından bakılınca gayet öğretici bir örnek. Ha bir çok şeye uzaktan bakıp ta “ya bunda bişey yok” diyenlere sözüm yok 🙂 onlar genelde herşeye öyle derler zaten …. ben kodlarımı buraya not edeyim kim nasıl isterse bakabilir.  direk çalıştırmak için jar dosyasını buradan indirebilirsiniz.

import com.sun.xml.internal.ws.util.StringUtils;
import javafx.application.Application;

import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.geometry.Insets;

import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;


import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.effect.Bloom;
import javafx.scene.effect.DropShadow;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;

import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;



public class Main extends Application
{

   static StringBuilder sb=new StringBuilder();
    static TextField textField=new TextField();
    static  TextField textFieldEkran=new TextField();
    static String islem=null;
    static String hafiza=null;
    static String islemYapilacakSayi=null;

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


    @Override
    public void init() throws Exception {
        super.init();


    }

    @Override
    public void start(Stage stage)
    {

        GridPane root=new GridPane();




        root.setVgap(10);
        root.setHgap(10);
        root.setPadding(new Insets(20,0,10,0));
        root.setAlignment(Pos.TOP_CENTER);


        textField.setPrefSize(220,50);
        textField.setAlignment(Pos.BASELINE_RIGHT);
        textField.setFont(Font.font("Verdana", FontWeight.BOLD,18));
        root.add(textField,1,1);


        textFieldEkran.setPrefSize(220,50);
        textFieldEkran.setAlignment(Pos.BASELINE_RIGHT);
        textFieldEkran.setFont(Font.font("Verdana", FontWeight.BOLD,18));
        textFieldEkran.setDisable(true);
        root.add(textFieldEkran,1,0);


        //Creating a scene object

        FlowPane flowPane=new FlowPane(Orientation.HORIZONTAL,6,10);
        flowPane.setPrefSize(220,220);

        flowPane.setAlignment(Pos.TOP_CENTER);

        String[] buttons={"MC","MR","M+","M-","CE","C","<-","/","7","8","9","*","4","5","6","-","1","2","3","+","+/-","0",",","="};
        for(String button:buttons){

            Button btn;
            if(isNumeric(button)) {
                 btn = new Button(button);
                btn.setPrefSize(50, 50);
                btn.setTextFill(Color.WHITE);
                btn.setStyle("-fx-background-color:#FF9100");
                btn.setId(button);
                btn.setOnMouseEntered(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent event) {
                        btn.setEffect(new Bloom());
                        btn.setTextFill(Color.BLACK);

                    }
                });

                btn.setOnMouseExited(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent event) {
                        btn.setEffect(null);
                    }
                });

            }
            else
            {

                 btn = new Button(button);
                btn.setPrefSize(50, 50);
                btn.setTextFill(Color.BLACK);
                btn.setStyle("-fx-background-color:#BDBDBD");
                btn.setId(button);

                btn.setOnMouseEntered(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent event) {
                        DropShadow dropShadow=new DropShadow();
                        dropShadow.setColor(Color.GAINSBORO);
                        btn.setEffect(dropShadow);

                    }
                });

                btn.setOnMouseExited(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent event) {
                        btn.setEffect(null);
                    }
                });
            }

            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {

                    if(isNumeric(button)) {
                      ekranaYaz(button);
                    }
                    else
                    {

                        // islem seçilmiştir onu bul
                        switch (button){

                            case "CE":
                                sb.delete(0,sb.length());
                                hafiza="0";
                                ekranaYaz(sb.toString());
                                break;


                            case "C":
                                hafiza=sb.toString();
                               sb.delete(0,sb.length());
                               textField.setText(sb.toString());
                                System.out.println("Hafızadaki değer"+hafiza);
                            case "<-":
                                if(sb.length()>1){
                                sb.deleteCharAt(sb.length()-1);
                                textField.setText(sb.toString());}
                                else
                                {
                                    sb.delete(0,1);
                                    if(sb.length()==0){
                                        textField.setText("0");
                                    }

                                }
                                break;

                            case "/":
                                islem="bolme";
                                islemYapilacakSayi=textField.getText().trim();
                                textFieldEkran.setText(islemYapilacakSayi);
                                sb.delete(0,sb.length());
                                textField.setText("");
                                System.out.println("Bölme işlemi yapılacak İşlem Yapılacak Sayı: "+islemYapilacakSayi);
                                break;


                            case "*":

                                islem="carpma";
                                islemYapilacakSayi=textField.getText().trim();
                                textFieldEkran.setText(islemYapilacakSayi);
                                sb.delete(0,sb.length());
                                textField.setText("");
                                System.out.println("carpma işlemi yapılacak İşlem Yapılacak Sayı: "+islemYapilacakSayi);
                                break;

                            case "+":

                                islem="toplama";
                                islemYapilacakSayi=textField.getText().trim();
                                textFieldEkran.setText(islemYapilacakSayi);
                                sb.delete(0,sb.length());
                                textField.setText("");
                                System.out.println("toplama işlemi yapılacak İşlem Yapılacak Sayı: "+islemYapilacakSayi);
                                break;

                            case "-":

                                islem="cikarma";
                                islemYapilacakSayi=textField.getText().trim();
                                textFieldEkran.setText(islemYapilacakSayi);
                                sb.delete(0,sb.length());
                                textField.setText("");
                                System.out.println("cikarma işlemi yapılacak İşlem Yapılacak Sayı: "+islemYapilacakSayi);

                                break;

                            case "+/-":
                                if(!sb.toString().contains("-")) {
                                    sb.insert(0, "-");
                                    textField.setText(sb.toString());
                                }
                                else{
                                    sb.deleteCharAt(0);
                                    textField.setText(sb.toString());
                                }
                                break;

                            case ",":

                                if(!sb.toString().contains(".")) {
                                    sb.append(".");
                                    textField.setText(sb.toString());
                                }
                                else{
                                    int index=sb.indexOf(".");
                                   sb.delete(index,sb.length());
                                    //sb.deleteCharAt();

                                    textField.setText(sb.toString());
                                }

                                break;

                            case "=":

                                //sb.delete(0,sb.length());
                                try {
                                  Double hafizadakiDeger = Double.parseDouble(islemYapilacakSayi);

                                 Double ekrandakiDeger =Double.parseDouble(textField.getText());
                                 //System.out.println(ekrandakiDeger);

                                  switch (islem) {

                                        case "bolme":
                                            textField.setText(String.valueOf(hafizadakiDeger / ekrandakiDeger));
                                            sb.append(textField.getText());
                                            break;
                                        case "carpma":
                                            textField.setText(String.valueOf(hafizadakiDeger * ekrandakiDeger));
                                            sb.append(textField.getText());
                                            break;
                                        case "toplama":
                                            textField.setText(String.valueOf(hafizadakiDeger + ekrandakiDeger));
                                            sb.append(textField.getText());
                                            break;
                                        case "cikarma":
                                            textField.setText(String.valueOf(hafizadakiDeger - ekrandakiDeger));
                                            sb.append(textField.getText());
                                            break;
                                        default:
                                            break;
                                    }

                                }catch (Exception ex){
                                    System.out.println(ex.getMessage());
                                }
                                break;



                                default:
                                    break;

                        }
                    }


                }
            });

            flowPane.getChildren().add(btn);



        }




        root.add(flowPane,1,2);
        Label label=new Label("Desinged - Programmed by Veysel SARI");
        label.setAlignment(Pos.CENTER);
        label.setStyle("-fx-text-fill:#fff;-fx-font-size:10;");

        root.add(label,1,3);

        root.setStyle("-fx-background-color:#263238");
        Scene scene=new Scene(root,300,500);



            stage.setScene(scene);
            stage.setTitle("Hesap Makinası");

        //Displaying the contents of the stage
        stage.show();


    }

    public static boolean isNumeric(String str)
    {
        try
        {
            double d = Double.parseDouble(str);
        }
        catch(NumberFormatException nfe)
        {
            return false;
        }
        return true;
    }

    public static double sayiyaCevir(String s){

       return 20d;
    }

    public static void ekranaYaz(String s){
        if(s!=null){
        sb.append(s);
        textField.setText(sb.toString());}
        else
        {
            sb=sb.delete(0,sb.length());
            textField.setText(sb.toString());
        }

    }


}



 

admin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir