إعلان
تعلم الآن

كيفية تطبيق المزامنة في جافا و مشكلة استرجاع البيانات

مرحباً، هل يمكن مساعدتي في فهم المزامنة في جافا أكثر.

أنا درست المزامنة من الموقع وحاولت تطبيقها بمثال صغير بحيث أنني حين أضغط على المستطيل و يزيد الطول و العرض الخاص به، و بعدها أضغط save و أفتح الملف الذي حفظته و يعطيني البيانات الصحيحة و لكن عندما أغلق البرنامج و أرجع للمزامنة لا يتم استراجع التغييرات و إنما يرجع من نقطة الصفر!

ممكن شرح كيف يمكنني حفظ التغييرات التي أفعلها مباشرة بالـscene بالملف و بعد إعادة تشغيله ترجع الإعدادت التي فعلتها قبل الحفظ و شكراً لكم.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class javaSer extends Application implements Serializable {

    public static int inc = 0;

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button("open setting");
        Button btn2 = new Button("save setting");

        btn.setOnMouseClicked((event) -> {
            try {
                FileChooser fileChooser = new FileChooser();
                fileChooser.setTitle("open");
                File selectedFile = fileChooser.showOpenDialog(primaryStage);
                _import(selectedFile.getPath());

            } catch (Exception e) {
            }
        });

        btn2.setOnMouseClicked((event) -> {
            try {
                FileChooser fileChooser = new FileChooser();
                fileChooser.setTitle("save");
                File name = fileChooser.showSaveDialog(primaryStage);
                _export(name.getPath());
            } catch (Exception e) {
            }
        });

        VBox root = new VBox();
        root.setSpacing(20);
        
        
        Rectangle rect = new Rectangle();
        rect.setHeight(Editor.height);
        rect.setWidth(Editor.width);
        rect.setFill(Color.RED);
        rect.setTranslateX(0);
        rect.setTranslateX(0);
        rect.setOnMouseClicked((event) -> {
            Editor.height += 150;
            Editor.width += 150;
        });

        root.getChildren().addAll(btn, btn2, rect);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static class Editor implements Serializable {

        public static int height = 100 + inc;
        public static int width = 100 + inc;

        public String language;
        public String encoding;
        public String fontSize;
        public String fontFamily;
        public boolean autoSave;
        public boolean autoComplete;
        public transient String direction;

    }

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

    public void _import(String Path) {
        Editor e = new Editor();

        if (new File(Path).exists()) {
            try {
                FileInputStream fis = new FileInputStream(Path);
                ObjectInputStream ois = new ObjectInputStream(fis);

                e = (Editor) ois.readObject();

                fis.close();
                ois.close();

                System.out.println("Deserialized data has been created in the memory");
                System.out.println("Language:      " + e.language);
                System.out.println("Encoding:      " + e.encoding);
                System.out.println("Font size:     " + e.fontSize);
                System.out.println("Font family:   " + e.fontFamily);
                System.out.println("Auto save:     " + e.autoSave);
                System.out.println("Direction:     " + e.direction);
                System.out.println("Auto Complete: " + e.autoComplete);
                System.out.println("Height: " + e.height);
                System.out.println("Width : " + e.width);
                System.out.println();
            } catch (IOException | ClassNotFoundException ex) {
                System.out.println(ex.getMessage());
            }
        }

        //    _export( Path);
    }

    public void _export(String Path) {
        Editor e = new Editor();

        try {
            e.language = "woks";
            e.encoding = "utf-8";
            e.fontSize = "12pt";
            e.fontFamily = "tahoma";
            e.autoSave = true;
            e.direction = "right to left";
            e.height = e.height + inc;
            e.width = e.width + inc;
            System.out.println("" + e.height + " und " + e.width);

            FileOutputStream fos = new FileOutputStream(Path);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(e);
            oos.close();
            fos.flush();
            fos.close();

            System.out.println("path is  " + Path + "");
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }

    }

}


إجابات 2

أضف إجابة

يجب تسجيل الدخول حتى تتمكن من إضافة إجابة أو رد.
إعلان
دورة PHP و MySQL في هذه الدورة ستتعلم أساسيات لغة PHP و أساسيات MySQL و من ثم ستتعلم كيفية بناء مشروع نظام طلبات مع لوحة التحكم تطبق فيه جميع الأساسيات التي تعلمتها. سعر الدورة الآن هو 20 ريال سعودي فقط بدلاً من 520 ريال
سعر الدورة الآن هو 20 ريال سعودي فقط بدلاً من 520 ريال
تعلم الآن

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة