كيفية تطبيق المزامنة في جافا و مشكلة استرجاع البيانات
مرحباً، هل يمكن مساعدتي في فهم المزامنة في جافا أكثر.
أنا درست المزامنة من الموقع وحاولت تطبيقها بمثال صغير بحيث أنني حين أضغط على المستطيل و يزيد الطول و العرض الخاص به، و بعدها أضغط 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
أضف إجابة
روابط مهمة
حقوق النشر
جميع الحقوق محفوظة لموقع هرمش. لا يسمح باستخدام الشروحات لأغراض تجارية، إجراء تعديل عليها، نشرها في موقع آخر، وضع الشروحات في تطبيق أو في كتاب إلا في حال أخذ موافقة صريحة من إدارة الموقع كما أن المحتوى مسجل بواسطة DMCA و في حال قيامك بمخالفة حقوق النشر سنضطر آسفين لاتخاذ الإجراءات اللازمة.