سؤال وجواب 1 (قم بقراءة صورة من النت وإظهارها علي الـ Frame)
السلام عليكم ورحمة الله وبركاته
هذا الدرس بسيط جدا وهو موجه لمن لديهم دراية بسيطة باللغة
الهدف منه هو برمجة البرنامج بحيث يظهر صورة من النت علي الـ Frame الأساسية في البرنامج
الخطوات
- نصنع الـ Frame الأساسية الخاصة بالبرنامج
- نصنع الـ Panel التي سنضع عليها الصورة
- قراءة الصورة من النت ورسمها علي الـ Panel
- وضع الـ Panel علي الـ Frame
الشرح
1-صنع الـ Frame
أول شئ سنصنع Class يرث JFrame
class MainFrame extends JFrame
{
public MainFrame()
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400, 380);
setResizable(false);
setLocationRelativeTo(null);
setTitle("Good kick");
}
}
بعد ذلك نأخد منه Object في الـ Main
ثم ننادي علي الـ Method التي تظهره وهى setVisible
وإذا لم نناديها ونعطيها True فسيكون الـ Frame خفيا ولن يظهر
public class AddingDesign
{
public static void main(String [ ] args)
{
MainFrame mf=new MainFrame();
mf.setVisible(true);
}
}
2-صنع الـ Panel التي سنضع عليها الصورة
الآن سنصنع الـ Class الخاص بالـ panel
class paintImg extends JPanel
{
}
3-بعد أن صنعنا الـ Class نريد أن نرسم عليه الصورة
حسنا لكي نرسم علي الـ panel نحتاج إلي Method تقوم بهذا
هذه الـ Method اسمها paint وهي موجودة في الـ Class JPanel اذا ينبغي أن نقوم بعمل override لها
وهى تأخذ شئ من نوع Graphics وليس لها Return
class paintImg extends JPanel
{
@Override
public void paint (Graphics g)
{
}
}
الـ object الذي أخذناه من الـ Graphics فيه الكثير من الـ Methods ومنهم واحدة اسمها drawImage وهى المسؤلة عن رسم الصورة
هذه الـ Method تأخذ شئ من نوع Image ثم الإحداثيات التي يبدأ من عندها رسم الصورة ثم الـ imageObserver ولا داعي لاستعماله اليوم
حسنا كيف نصنع سئ من نوع Image
اقرأ الكود التالي سريعا
class paintImg extends JPanel
{
@Override
public void paint (Graphics g)
{
try
{
URL imgURL=new URL("http://images.paraorkut.com/img/funnypics/images/s/soccer_ball-12227.jpg");
Image img=ImageIO.read(imgURL);
g.drawImage(img,0,0,null);
}
catch(Exception exc1){System.out.println(exc1.getMessage());}
}
}
أنت ترى الآن شيئ غريبا من نوع URL ... لا تقلق فالموضوع ببسابطة هو أنك تصنع شئ تسميه imgURL يخزن رابط الصورة
والسطر الذي يليه يصنع شئ من نوع Image و الـ read () تقوم بقراءة الصورة من الرابط وتحولها لشئ من نوع Image
وبعد ذلك نقوم برسمها
4-وضع الـ Panel علي الـ Frame
صحيح أننا قد رسمنا الصورة ولكن ذلك لا يعني أنها ستظهر على الـ Frame ...لماذا ؟
لأننا رسمنا الصورة علي الـ Panel ولم نقم بوضعه بعد علي
ولكي نضع الـ Panel علي الـ Frame ينبغي أن نأخذ object من الـ Panel وبعد ذلك نضع هذا الـ object علي الـ Frame
class MainFrame extends JFrame
{
public MainFrame()
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400, 380);
setResizable(false);
setLocationRelativeTo(null);
setTitle("Good kick");
paintImg pi=new paintImg();
add(pi);
}
}
دعونا ننظر الآن إلي الكود الكلي
package applcation;
import java.awt.Graphics;
import java.awt.Image;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Applcation
{
public static void main(String [ ] args)
{
MainFrame mf=new MainFrame();
mf.setVisible(true);
}
}
class MainFrame extends JFrame
{
public MainFrame()
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400, 380);
setResizable(false);
setLocationRelativeTo(null);
setTitle("Good kick");
paintImg pi=new paintImg();
add(pi);
}
}
class paintImg extends JPanel
{
@Override
public void paint (Graphics g)
{
try
{
URL imgURL=new URL("http://images.paraorkut.com/img/funnypics/images/s/soccer_ball-12227.jpg");
Image img=ImageIO.read(imgURL);
g.drawImage(img,0,0,null);
}
catch(Exception exc1){System.out.println(exc1.getMessage());}
}
}
إن كان من توفيق فمن الله وإن كان من خطأ فمني ومن الشيطان
تقبل الله صيامكم :)

