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

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

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

In this lesson, you will learn how to create an IP Finder program that can be used to fetch the address of anything connected to the Internet, whether it is a server, computer, phone, etc.

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

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



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

في هذا المشروع قمنا بوضع ملف الجافا بداخل مجلد إسمه ip_finder.
و قمنا بوضع الصورة التي وضعناها كخلفية بداخل مجلد إسمه images كما في الصورة التالية. 

In this project, we put the Java file inside a folder called ip_finder. And we placed the image that we placed as a background inside a folder called images, as in the following image.



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

Main.java
//  snake_2d  موجود بداخل المجلد  Main.java  هنا ذكرنا أن الملف
package ip_finder;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
 
// و بالتالي أصبح إنشاء كائن منه يمثل إنشاء نافذة JFrame يرث من الكلاس Main هنا جعلنا الكلاس
public class Main extends JFrame implements ActionListener {
 
    // هنا قمنا بتعريف الأشياء التي سيتم وضعها في النافذة
    JPanel backgroundPanel;
    JLabel label, labelResult, backgroundImage;
    JTextField textField;
    JButton buttonFind;
 
    // فقط createAndShowGUI() سيقوم الكونستركتور بإستدعاء الدالة Main عند إنشاء كائن من الكلاس
    public Main() {
        createAndShowGUI();
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                // التي ستنشئ النافذة createAndShowGUI() و بالتالي سيتم إستدعاء الدالة Main هنا قمنا بإنشاء كائن من الكلاس
                new Main();
            }
        });
    }
 
    // هنا نضع كود إنشاء النافذة و محتوياتها
    private void createAndShowGUI() {
 
        // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
        backgroundPanel = new JPanel(null);
        backgroundImage = new JLabel(new ImageIcon(this.getClass().getResource("/images/world-map.png")));
        label = new JLabel("Enter URL", JLabel.CENTER);
        textField = new JTextField();
        buttonFind = new JButton("Get IP");
        labelResult = new JLabel("", JLabel.CENTER);
 
        // هنا قمنا بتحديد حجم و مكان كل شيء سيتم إضافته في النافذة
        backgroundPanel.setPreferredSize(new Dimension(600, 340));
        backgroundImage.setBounds(0, 0, 600, 340);
        label.setBounds(200, 75, 200, 30);
        textField.setBounds(200, 115, 200, 36);
        buttonFind.setBounds(200, 165, 200, 36);
        labelResult.setBounds(0, 225, 600, 30);
 
        // label هنا قمنا بتحديد خصائص العنوان
        label.setFont(new Font("Arial", Font.PLAIN, 20));
        label.setForeground(Color.WHITE);
 
        // textField هنا قمنا بتحديد خصائص مربع النص
        textField.setFont(new Font("Arial", Font.PLAIN, 18));
        textField.setForeground(Color.LIGHT_GRAY);
        textField.setBackground(new Color(10, 10, 10));
        textField.setCaretColor(Color.WHITE);
        textField.setFocusable(true);
        textField.setBorder(BorderFactory.createCompoundBorder(
                            textField.getBorder(),
                            BorderFactory.createEmptyBorder(5, 5, 5, 5)));
 
        // buttonFind هنا قمنا بتحديد خصائص الزر
        buttonFind.setFont(new Font("Arial", Font.BOLD, 16));
        buttonFind.setForeground(Color.LIGHT_GRAY);
        buttonFind.setBackground(Color.DARK_GRAY);
        buttonFind.setBorder(BorderFactory.createLineBorder(Color.GRAY, 2));
        buttonFind.setFocusable(false);
 
        // labelResult هنا قمنا بتحديد نوع و حجم خط النتيجة التي ستظهر مكان العنوان
        labelResult.setFont(new Font("Arial", Font.PLAIN, 18));
 
        // هنا قمنا بإضافة جميع الأشياء التي قمنا بإنشائها في حاوية النافذة
        backgroundPanel.add(label);
        backgroundPanel.add(textField);
        backgroundPanel.add(buttonFind);
        backgroundPanel.add(labelResult);
        backgroundPanel.add(labelResult);
        backgroundPanel.add(backgroundImage);
 
        // actionPerformed() سيتم تنفيذ الأوامر الموضوعة في الدالة buttonFind هنا قلنا أنه عند النقر على الزر
        buttonFind.addActionListener(this);
 
        // هنا قمنا بإضافة الحاوية التي تحتوي على كل الأشياء التي قنما بتعريفها في النافذة
        add(backgroundPanel);
 
        // هنا قمنا بتحديد بعض خصائص النافذة و جعلناها مرئية
        setTitle("IP Finder");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
 
 
    // actionPerformed() للدالة Override يجب أن نفعل ,ActionListener يطبق الإنترفيس Main بما أننا جعلنا الكلاس
    // Get IP لتحديد ما سيحدث عند النقر على الزر
    @Override
    public void actionPerformed(ActionEvent e) {
 
        // url سيتم تخزين النص الموجود في مربع النص في الكائن
        String url = textField.getText();
 
        // labelResult إذا لم يكن مربع النص فارغاً سيحاول البرنامج الإتصال بالنت و جلب عنوان الموقع المذكور و وضعه كنص للكائن
        if(!url.isEmpty())
        {
            try {
                InetAddress address = InetAddress.getByName(url);
                String ip = address.getHostAddress();
                labelResult.setText(ip);
                labelResult.setForeground(Color.GREEN);
            }
            catch (UnknownHostException ex) {
                labelResult.setText("Invalid URL or Network is Down");
                labelResult.setForeground(Color.RED);
            }
        }
        // إذا كان مربع النص فارغاً عند النقر على الزر, سيتم إظهار النص التالي و تلوينه بالأحمر
        else {
            labelResult.setText("Please enter a valid URL in the above field");
            labelResult.setForeground(Color.RED);
        }
    }
 
}