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

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

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

java swing ip finder source code تحميل كود برنامج كاشف عناوين المواقع و الأجهزة في جافا


بناء البرنامج

  • ملفات الجافا وضعناها مباشرةً في المشروع.
  • الصور وضعناه بداخل مجلد إسمه images.


خيارات التحميل

⇓ تحميل البرنامج ⇓ تحميل المشروع كاملاً ⇓ تحميل مجلد الصور فقط



كود البرنامج

Main.java
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);
    }

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

الدورات

أدوات مساعدة

أقسام الموقع

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