Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

JavaFXطريقة فتح الملف الذي تم تحديده بواسطة FileChooser

المثال التالي يعلمك طريقة إظهار FileChooser عند النقر على Button.
بالإضافة إلى طريقة عرض محتوى الملف الذي إختاره المستخدم بواسطة FileChooser في TextArea.


مثال

Main.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage stage) {
// هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
FileChooser fileChooser = new FileChooser();
Button button = new Button("Open File");
TextArea textArea = new TextArea();
// FileChooser هنا قمنا بوضع عنوان للكائن
fileChooser.setTitle("Open Resource File");
// هنا قمنا بتحديد أنواع الملفات التي نريد إظهارها في قائمة تحديد أنواع الملفات التي يمكن للمستخدم إختيارها
fileChooser.getExtensionFilters().addAll(
new ExtensionFilter("Text Files", "*.txt"),
new ExtensionFilter("Java Files", "*.java"),
new ExtensionFilter("Web Files", "*.html", "*.css", "*.js", "*"),
new ExtensionFilter("All Files", "*.*")
);
// هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في النافذة
button.setTranslateX(20);
button.setTranslateY(20);
textArea.setTranslateX(20);
textArea.setTranslateY(60);
// هنا قمنا بتحديد حجم جميع الأشياء التي سنضيفها في النافذة
button.setPrefSize(100, 30);
textArea.setPrefSize(710, 420);
// في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
Group root = new Group();
// root هنا قمنا بإضافة جميع الأشياء في الكائن
root.getChildren().add(button);
root.getChildren().add(textArea);
// فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
Scene scene = new Scene(root, 750, 500);
// هنا وضعنا عنوان للنافذة
stage.setTitle("JavaFX FileChooser");
// أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
stage.setScene(scene);
// هنا قمنا بإظهار النافذة
stage.show();
// button هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن
button.setOnAction((ActionEvent) -> {
// لتخزين الملف الذي قد يختاره المستخدم من الحاسوب selectedFile و قمنا بتجهيز الكائن showOpenDialog() بواسطة الدالة fileChooser هنا قمنا بإظهار الكائن
File selectedFile = fileChooser.showOpenDialog(stage);
// Open فهذا يعني أن المستخدم قام باختيار ملف على جهازه و نقر على الزر null لا تساوي selectedFile في حال كانت قيمة الكائن
if (selectedFile != null) {
// filePath هنا قمنا بحفظ مسار الملف في المتغير
String filePath = selectedFile.getPath();
try {
// text و تجميع كل الأسطر التي يتم قراءتها في الهاية في المتغير line ثم قراءة محتواه سطراً سطراً بشكل مؤقت في المتغير
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line = "";
String text = "";
while ((line = br.readLine()) != null) {
text += line + "\n";
}
// ثم إغلاق الإتصال مع الملف textArea كنص للـ text في الأخير سيتم وضع النص الذي تم قراءته من الملف و تخزينه في المتغير
textArea.setText(text);
br.close();
}
catch (IOException ioe) {
// Alert في حال حدث خطأ سيتم عرضه بداخل
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("ERROR");
alert.setHeaderText("Opps.. There is a problem");
alert.setContentText(ioe.getMessage());
alert.show();
}
}
});
}
// هنا قمنا بتشغيل التطبيق
public static void main(String[] args) {
launch(args);
}
}
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; import javafx.scene.control.TextArea; import javafx.stage.FileChooser; import javafx.stage.FileChooser.ExtensionFilter; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة FileChooser fileChooser = new FileChooser(); Button button = new Button("Open File"); TextArea textArea = new TextArea(); // FileChooser هنا قمنا بوضع عنوان للكائن fileChooser.setTitle("Open Resource File"); // هنا قمنا بتحديد أنواع الملفات التي نريد إظهارها في قائمة تحديد أنواع الملفات التي يمكن للمستخدم إختيارها fileChooser.getExtensionFilters().addAll( new ExtensionFilter("Text Files", "*.txt"), new ExtensionFilter("Java Files", "*.java"), new ExtensionFilter("Web Files", "*.html", "*.css", "*.js", "*"), new ExtensionFilter("All Files", "*.*") ); // هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في النافذة button.setTranslateX(20); button.setTranslateY(20); textArea.setTranslateX(20); textArea.setTranslateY(60); // هنا قمنا بتحديد حجم جميع الأشياء التي سنضيفها في النافذة button.setPrefSize(100, 30); textArea.setPrefSize(710, 420); // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس Group root = new Group(); // root هنا قمنا بإضافة جميع الأشياء في الكائن root.getChildren().add(button); root.getChildren().add(textArea); // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن Scene scene = new Scene(root, 750, 500); // هنا وضعنا عنوان للنافذة stage.setTitle("JavaFX FileChooser"); // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ stage.setScene(scene); // هنا قمنا بإظهار النافذة stage.show(); // button هنا قمنا بتحديد ماذا سيحدث عند النقر على الكائن button.setOnAction((ActionEvent) -> { // لتخزين الملف الذي قد يختاره المستخدم من الحاسوب selectedFile و قمنا بتجهيز الكائن showOpenDialog() بواسطة الدالة fileChooser هنا قمنا بإظهار الكائن File selectedFile = fileChooser.showOpenDialog(stage); // Open فهذا يعني أن المستخدم قام باختيار ملف على جهازه و نقر على الزر null لا تساوي selectedFile في حال كانت قيمة الكائن if (selectedFile != null) { // filePath هنا قمنا بحفظ مسار الملف في المتغير String filePath = selectedFile.getPath(); try { // text و تجميع كل الأسطر التي يتم قراءتها في الهاية في المتغير line ثم قراءة محتواه سطراً سطراً بشكل مؤقت في المتغير BufferedReader br = new BufferedReader(new FileReader(filePath)); String line = ""; String text = ""; while ((line = br.readLine()) != null) { text += line + "\n"; } // ثم إغلاق الإتصال مع الملف textArea كنص للـ text في الأخير سيتم وضع النص الذي تم قراءته من الملف و تخزينه في المتغير textArea.setText(text); br.close(); } catch (IOException ioe) { // Alert في حال حدث خطأ سيتم عرضه بداخل Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("ERROR"); alert.setHeaderText("Opps.. There is a problem"); alert.setContentText(ioe.getMessage()); alert.show(); } } }); } // هنا قمنا بتشغيل التطبيق public static void main(String[] args) { launch(args); } }

ستظهر لك النافذة التالية عند التشغيل.

طريقة عرض محتوى الملف الذي يختاره المستخدم بواسطة الـ FileChooser في javafx