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.
⇓ تحميل البرنامج ⇓ تحميل المشروع كاملاً ⇓ تحميل مجلد الصور فقط
كيفية بناء برنامج كاشف عناوين المواقع و الأجهزة 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
// 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); } } }