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

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

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

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

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



بناء اللعبة

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



كود البرنامج

Main.java
//  ip_finder  موجود بداخل المجلد  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);
        }
    }
 
}