Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals 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);
}
}
}
// 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); } } }

الدورات

أدوات مساعدة

أقسام الموقع

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