منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

[JavaFx] برنامج كاشف عناوين المواقع و الأجهزة IP Finder

اذهب الى الأسفل

[JavaFx]  برنامج كاشف عناوين المواقع و الأجهزة IP Finder Empty [JavaFx] برنامج كاشف عناوين المواقع و الأجهزة IP Finder

مُساهمة من طرف Rahaf Qa الإثنين سبتمبر 11, 2023 12:49 pm

طريقة إنشاء برنامج (IP Finder ) و الذي يمكن إستخدامه لجلب عنوان أي شيء متصل بالنت سواء كان سيرفر, حاسوب, هاتف إلخ..


import java.net.InetAddress;
import java.net.UnknownHostException;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;


public class Main extends Application {


    // هنا قمنا بتعريف الأشياء التي سيتم وضعها في النافذة
    Pane backgroundPane;
    ImageView imageView;
    Label label, labelResult, labelDevelopedBy;
    TextField textField;
    Button buttonFind;


    @Override
    public void start(Stage stage) {


        // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
        backgroundPane = new Pane();
        imageView = new ImageView(new Image(getClass().getResourceAsStream("/images/world-map.png")));
        label = new Label("Enter Domain");
        textField = new TextField();
        buttonFind = new Button("Get IP");
        labelResult = new Label("");
        labelDevelopedBy = new Label("Developed by harmash.com");


        // هنا قمنا بتحديد حجم كل شيء سيتم إضافته في الحاوية الرئيسية التي سنضعها في النافذة
        backgroundPane.setPrefSize(600, 340);
        imageView.setFitWidth(620);
        imageView.setFitHeight(360);
        label.setPrefSize(200, 30);
        textField.setPrefSize(200, 36);
        buttonFind.setPrefSize(200, 36);
        labelResult.setPrefSize(600, 30);
        labelDevelopedBy.setPrefSize(600, 30);


        // هنا قمنا بتحديد مكان ظهور كل شيء سيتم إضافته في الحاوية الرئيسية التي سنضعها في النافذة
        label.setTranslateX(200);
        label.setTranslateY(75);
        textField.setTranslateX(200);
        textField.setTranslateY(115);
        buttonFind.setTranslateX(200);
        buttonFind.setTranslateY(165);
        labelResult.setTranslateX(0);
        labelResult.setTranslateY(225);
        labelDevelopedBy.setTranslateX(0);
        labelDevelopedBy.setTranslateY(300);


        // يظهر في وسطهم labelDevelopedBy و labelResult ,textField ,label هنا قمنا بجعل نص الكائنات
        label.setAlignment(Pos.CENTER);
        textField.setAlignment(Pos.CENTER);
        labelResult.setAlignment(Pos.CENTER);
        labelDevelopedBy.setAlignment(Pos.CENTER);


        // ( نوع خطه, حجمه, سمكه, لونه ) label هنا قمنا يتعديل تصميم الكائن
        label.setStyle(
                "-fx-font-family: Arial;"
                + "-fx-font-size: 20px;"
                + "-fx-text-fill: white;"
                + "-fx-font-weight: bold;"
        );


        // ( نوع خطه, حجمه, سمكه, لونه, مع تحديد لون و سمك حدوده و لون خلفيته ) textField هنا قمنا يتعديل تصميم الكائن
        textField.setStyle(
                "-fx-font-family: Arial;"
                + "-fx-font-size: 16px;"
                + "-fx-text-fill: lightgrey;"
                + "-fx-border-color: gray;"
                + "-fx-border-style: solid;"
                + "-fx-border-width: 2px;"
                + "-fx-background-color: black;"
        );


        // ( نوع خطه, حجمه, سمكه, لونه, مع تحديد لون و سمك حدوده و لون خلفيته ) buttonFind هنا قمنا يتعديل تصميم الكائن
        buttonFind.setStyle(
                "-fx-font-family: Arial;"
                + "-fx-font-size: 16px;"
                + "-fx-text-fill: lightgrey;"
                + "-fx-border-color: gray;"
                + "-fx-border-style: solid;"
                + "-fx-border-width: 2px;"
                + "-fx-background-color: #333;"
                + "-fx-cursor: hand;"
        );


        // ( نوع خطه, حجمه, سمكه ) labelResult هنا قمنا يتعديل تصميم الكائن
        labelResult.setStyle(
                "-fx-font-family: Arial;"
                + "-fx-font-size: 18px;"
                + "-fx-font-weight: bold;"
        );


        // ( نوع خطه, حجمه, سمكه, لونه ) labelDevelopedBy هنا قمنا يتعديل تصميم الكائن
        labelDevelopedBy.setStyle(
                "-fx-font-family: Arial;"
                + "-fx-font-size: 16px;"
                + "-fx-text-fill: Blue;"
                + "-fx-font-weight: bold;"
        );
        
        // buttonFind هنا قمنا بتحديد ما سيحدث عند النقر على الكائن
        buttonFind.setOnAction((ActionEvent) -> {
            // url سيتم تخزين النص الموجود في مربع النص في الكائن
            String url = textField.getText();


            // labelResult إذا لم يكن مربع النص فارغاً سيحاول البرنامج الإتصال بالنت و جلب عنوان الموقع المذكور و وضعه كنص للكائن
            if (!url.isEmpty()) {
                try {
                    InetAddress address = InetAddress.getByName(url);
                    String ip = address.getHostAddress();
                    labelResult.setText(ip);
                    labelResult.setTextFill(Color.GREEN);
                }
                catch (UnknownHostException ex) {
                    labelResult.setText("Invalid URL or Network is Down");
                    labelResult.setTextFill(Color.RED);
                }
            }
            // إذا كان مربع النص فارغاً عند النقر على الزر, سيتم إظهار النص التالي و تلوينه بالأحمر
            else {
                labelResult.setText("Please enter a valid URL in the above field");
                labelResult.setTextFill(Color.RED);
            }
        });


        // في النافذة Root Node و الذي ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
        Group root = new Group();


        // هنا قمنا بإضافة جميع الأشياء التي قمنا بإنشائها في النافذة
        root.getChildren().add(backgroundPane);
        root.getChildren().add(imageView);
        root.getChildren().add(label);
        root.getChildren().add(textField);
        root.getChildren().add(buttonFind);
        root.getChildren().add(labelResult);
        root.getChildren().add(labelDevelopedBy);


        // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
        Scene scene = new Scene(root, 600, 340);
        // هنا وضعنا عنوان للنافذة
        stage.setTitle("Ip Finder");
        // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
        stage.setScene(scene);
        // هنا قمنا بإظهار النافذة
        stage.show();
        // هنا جعلنا المستخدم غير قادر على تكبير أو تصغير حجم النافذة بنفسه
        stage.setResizable(false);


    }


    // هنا قمنا بتشغيل التطبيق
    public static void main(String[] args) {
        launch(args);
    }



}
Rahaf Qa
Rahaf Qa
..
..

تاريخ التسجيل : 08/09/2023
المساهمات : 17
النقاط : 51
التقيم : 0
الدولة : الاردن
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى