Java dasturlash tilida Frame boshqa foydalanuvchi interfeysi elementlari uchun konteyner vazifasini bajaradi. Foydalanuvchi interfeysi elementlari Panel elementiga chiziladi keyin esa ushbu Panel Frame oynasiga joylashtiriladi.
Panellar JPanel klassi yordamida yaratilib ular quyidagi xususiyatlarga ega:
- ular ustiga elementlar chizish mumkin;
- ular o’z navbatida konteyner xisoblanib boshqa foydalanuvchi interfeysi elementlarni joylashtirishi mumkin. Panel elementida biron bir rasm joylashtirish uchun JPanel klassini kengaytirib painComponent() metodini qayta yaratish kerak bo’ladi. paintComponent() metodi JPanel klassini tomonidan JComponent klassidan meros qilib olingan bo’lib ushbu metod Graphics turidagi elementni argument sifatida qabul qiladi. Quyidagi misolni ko’rib chiqamiz:
import java.awt.*;
import javax.swing.*;
public class MeningRasmim
{
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300,200);
MyPanel p = new MyPanel();
f.add(p);
f.setVisible(true);
}
}
class MyPanel extends JPanel
{
public void paintComponent(Graphics g)
{
g.setColor(Color.orange);
g.fillRect(20,20,100,100);
}}
Ushbu dastur ekranga quyidagi oynani chiqarib beradi:
JPanel klassining paintComponent() metodi yordamida chizilgan rasm MyPanel klassi JPanel klassini kengaytirib meros qilib olingan paintComponent() metodini qayta yaratadi. Graphics elementi yordamida ko’k rangli, 20,20 nuqtada boshlanadigan va 100x100 o’lchamga ega to’rtburchak chizib olinadi. MeningRasmim klassi Frame oynasini yaratadi va MyPanel klassi asosida panel yaratib Framega joylashtiradi.
JPanel klassining paintComponent() metodini qayta yaratib panelga tayyor rasmlarni xam joylashtirish mumkin. Yuqoridagi MeningRasmim dasturda MyPanel klassining paintComponent() metodini quyidagiga o’zgartiramiz:
public void paintComponent(Graphics g)
{
Image rasm = new ImageIcon(“sumka.png”).getImage();
g.drawImage(rasm,3,4,this);
}
Dastur quyidagi oynani ekranga chiqarib beradi:
JPanel klassining paintComponent() metodi yordamida aks ettirilgan rasm JPanel klassining paintComponent() metodi yordamida Panelga matn yozish xam mumkin. Buning uchun MeningRasmim klassida paintCpmponent() metodini quyidagiga o’zgartiramiz:
public void paintComponent(Graphics g)
{
g.drawString(“Hello World!”,100,75);}
Dastur quyidagi oynani ekranga chiqarib beradi: