كود محلل عناوين المواقع لا يعمل
السلام عليكم، عندما أنسخ كود محلل عنوانين المواقع لا يعمل معي مع العلم أني أخذت صورة أخرى بنفس الإسم.
الكود:
// 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);
}
}
}
نتيجة التشغيل:
أتمنى مساعدتي بحل المشكلة.