الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

جعل الخلفية كصورة + JPanel

بدأه sosy87 في 26 مايو 2010 · 12 رد · 875 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لدي كلاس من نوع JFrame

وداخله JPanel لرسم المكونات عليها

أريد وضع الخلفية صورة في واجهتي وجربت عدة طرق لكنها توقف عمل برنامج وبعضها لا يوقف العمل لكنه لا يغير أي شيء في الواجهه والبعض الأخير لم أستطع وضعه في كودي

من المشاركة للفاضل حسام :

/index.php?showtopic=66368&view=findpost&p=329259

قمت بعمل :

	   
		JPanel Panel = new JPanel(){
			public void paint(Graphics g){
				Image img = new ImageIcon("images/GetAttachment.aspx-(22).jpg").getImage();

			    g.drawImage(img, 700, 500,this);
				super.paint(g); //to paint Components
				}
				};


		Panel.setLayout(new GridBagLayout());
	    Panel.setMinimumSize(new Dimension(700, 500));
	    Panel.setPreferredSize(new Dimension(700, 500));

لكنه لم يغير شيء في الواجهه

أيضًا جربت:

	    Image backgroundImagee=new ImageIcon(("images/GetAttachment.aspx-(22).jpg")).getImage();

	    Icon backgroundIcon=new Icon(backgroundImagee);

	    // create a label to paint the background image
        JLabel backgroundImage = new JLabel(backgroundIcon);

        // set minimum and preferred sizes so that the size of the image
        // does not affect the layout size
        backgroundImage.setPreferredSize(new Dimension(1,1));
        backgroundImage.setMinimumSize(new Dimension(1,1));

        // align the image as specified.
        backgroundImage.setVerticalAlignment(700);
        backgroundImage.setHorizontalAlignment(500);

        GridBagConstraints gbc = new GridBagConstraints();
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 1.0;
        gbc.weighty = 1.0;
        gbc.fill = GridBagConstraints.BOTH;
        gbc.anchor = GridBagConstraints.NORTHWEST;

        // add the background label
        Panel.add(backgroundImage, gbc);

لكن هناك خطأ في وضعي للصورة داخل الآيكون ولم أعرف كيف أحلّه..

أي اقتراح بالنسبة للأكواد التي وضعتُ أو طريقة أسهل لوضع الصورة كخلفية؟

#2

جربى ذلك/////

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageTest {

  public static void main(String[] args) {
    ImagePanel panel = new ImagePanel(new ImageIcon("images/background.png").getImage());

    JFrame frame = new JFrame();
    frame.getContentPane().add(panel);
    frame.pack();
    frame.setVisible(true);
  }
}

class ImagePanel extends JPanel {

  private Image img;

  public ImagePanel(String img) {
    this(new ImageIcon(img).getImage());
  }

  public ImagePanel(Image img) {
    this.img = img;
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);
    setSize(size);
    setLayout(null);
  }

  public void paintComponent(Graphics g) {
    g.drawImage(img, 0, 0, null);
  }

}

تم تعديل هذه المشاركة بواسطة اسراء شلبى في 26 مايو 2010 في 18:59

00020309t.gif

1958_1963.gif
#3

أختي إسراء حاولت إضافة كودك بطرق عدّة لكن لم ينتج شيء، أعمل على الكود مباشرة لتعديل الواجهه وليس من خلال النت بينز

كودي :

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.Color;

public class index extends JFrame {

	private JButton Exit;

public index() {
		super();

		addWindowListener(new	WindowAdapter() {
			public void windowClosing(WindowEvent e) {
			 hide();
			}
		} );

		JPanel Panel = new JPanel();
		Panel.setLayout(new GridBagLayout());
	    Panel.setMinimumSize(new Dimension(700, 500));
	    Panel.setPreferredSize(new Dimension(700, 500));


	    ImageIcon image = new ImageIcon("images/GetAttachment.aspx-(22).jpg");
	    JLabel ImageLabel = new JLabel(image);
	    ImageLabel.setMinimumSize(new Dimension(300,300));
	    ImageLabel.setPreferredSize(new Dimension(300,300));
	    ImageLabel.setHorizontalAlignment(SwingConstants.CENTER);
	    GridBagConstraints gridBagConstraints = new GridBagConstraints();
	    gridBagConstraints.gridx=0;
	    gridBagConstraints.gridy=0;
	    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
	    gridBagConstraints.insets = new Insets(5, 3, 0, 3);

	    Panel.add(ImageLabel, gridBagConstraints);

	    Exit = new JButton("Exit");
	    Exit.setMinimumSize(new Dimension(100,35));
	    Exit.setPreferredSize(new Dimension(100,35));
	    GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
	    gridBagConstraints3.gridx=0;
	    gridBagConstraints3.gridy=8;
	    gridBagConstraints3.anchor = java.awt.GridBagConstraints.SOUTH;
	    gridBagConstraints3.insets = new Insets(5, 3, 0, 3);
	    Exit.addActionListener(new ActionListener(){
		  	public void actionPerformed(ActionEvent e) {
		  		hide();
		  	}
			} );


	    Panel.add(Exit, gridBagConstraints3);

	    Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));

	    Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));
	    getContentPane().add(Panel, BorderLayout.CENTER);

	    pack();//for drawing

	    setResizable(false);
    }

}
#4
إضافة كودك بطرق عدّة لكن لم ينتج شيء، أعمل على الكود مباشرة لتعديل الواجهه وليس من خلال النت بينز

ماذا تقصدين...........؟! :wacko:

00020309t.gif

1958_1963.gif
#5

أقصد هكذا:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.Color;

public class index extends JFrame {

        private JButton Exit;
	    private Image img = new ImageIcon("images/GetAttachment.aspx-(22).jpg").getImage();

          public index() {
                super();

		Dimension size = new Dimension(700, 500);
	    setPreferredSize(size);
	    setMinimumSize(size);
	    setMaximumSize(size);
	    setSize(size);
//	    setLayout(null); وضعته كتعليق لأنه تختفي المكونات

                addWindowListener(new   WindowAdapter() {
                        public void windowClosing(WindowEvent e) {
                         hide();
                        }
                } );

                JPanel Panel = new JPanel();
                Panel.setLayout(new GridBagLayout());
            Panel.setMinimumSize(new Dimension(700, 500));
            Panel.setPreferredSize(new Dimension(700, 500));


            ImageIcon image = new ImageIcon("images/GetAttachment.aspx-(22).jpg");
            JLabel ImageLabel = new JLabel(image);
            ImageLabel.setMinimumSize(new Dimension(300,300));
            ImageLabel.setPreferredSize(new Dimension(300,300));
            ImageLabel.setHorizontalAlignment(SwingConstants.CENTER);
            GridBagConstraints gridBagConstraints = new GridBagConstraints();
            gridBagConstraints.gridx=0;
            gridBagConstraints.gridy=0;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
            gridBagConstraints.insets = new Insets(5, 3, 0, 3);

            Panel.add(ImageLabel, gridBagConstraints);

            Exit = new JButton("Exit");
            Exit.setMinimumSize(new Dimension(100,35));
            Exit.setPreferredSize(new Dimension(100,35));
            GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
            gridBagConstraints3.gridx=0;
            gridBagConstraints3.gridy=8;
            gridBagConstraints3.anchor = java.awt.GridBagConstraints.SOUTH;
            gridBagConstraints3.insets = new Insets(5, 3, 0, 3);
            Exit.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e) {
                                hide();
                        }
                        } );


            Panel.add(Exit, gridBagConstraints3);

            Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));

            Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));
            getContentPane().add(Panel, BorderLayout.CENTER);

            pack();//for drawing

            setResizable(false);
    }

	  public void paintComponent(Graphics g) {
		    g.drawImage(img, 0, 0, null);
		  }	  
}
#6

اختى لم افهم عليكى جيدااا

انتظرى حتى ياتى احد الاعضاء الافضل منى

و هم سياعدونك

00020309t.gif

1958_1963.gif
#7

لا بأس، ممتنة جدًا لمبادرتك اسراء وانتظر المساعدة من البقية

تم تعديل هذه المشاركة بواسطة sosy87 في 26 مايو 2010 في 20:01

#8

تم حل المشكلة ولله الحمد كما يلي :

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.Color;

public class index extends JFrame {

        private JButton Exit;
        private Image img = new ImageIcon("images/so0o0o0o0os.jpg").getImage();


          public index() {
                super();

		Dimension size = new Dimension(700, 500);
	    setPreferredSize(size);
	    setMinimumSize(size);
	    setMaximumSize(size);

                addWindowListener(new   WindowAdapter() {
                        public void windowClosing(WindowEvent e) {
                         hide();
                        }
                } );

		JPanel Panel = new JPanel(){
		  public void paintComponent(Graphics g) {
		    g.drawImage(img, 0, 0, null); }
		  };
		Panel.setLayout(new GridBagLayout());
	    Panel.setMinimumSize(new Dimension(700, 500));
	    Panel.setPreferredSize(new Dimension(700, 500));


            Exit = new JButton("Exit");
            Exit.setMinimumSize(new Dimension(100,35));
            Exit.setPreferredSize(new Dimension(100,35));
            GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
            gridBagConstraints3.gridx=0;
            gridBagConstraints3.gridy=8;
            gridBagConstraints3.anchor = java.awt.GridBagConstraints.SOUTH;
            gridBagConstraints3.insets = new Insets(5, 3, 0, 3);
            Exit.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e) {
                                hide();
                        }
                        } );


            Panel.add(Exit, gridBagConstraints3);

            Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));

            Panel.setBorder(new BevelBorder(BevelBorder.LOWERED));
            getContentPane().add(Panel, BorderLayout.CENTER);

            pack();//for drawing

            setResizable(false);
    }	  
}
#9

يمكنك ايضا الاطلاع على الموضوع التالى

وان شاء الله يفيدك

/index.php?showtopic=221658

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#10

اين كان يكمن الخطأ اختى الكريمة

00020309t.gif

1958_1963.gif
#11
اسراء شلبى كتب:

اين كان يكمن الخطأ اختى الكريمة

كانت تفعل paintComponet

للاطار وليس للـ panel

كانت تستدعى الـ

  public void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, null);
    }

فى اخر الكود وهيا فى مكانها هذا تشير الى اعاده رسم الاطار وليس panel

اما فى الكود الصحيح انها فعلتها على الـ panel

اتمنى ان اكون فهمت ووضحت بطريقه كويسه

سلام عليكم

1

Software Developer
Mahmoudkelany.com


 

#12

شكرااا اخ حمزاوى

00020309t.gif

1958_1963.gif
#13
اسراء شلبى كتب:

شكرااا اخ حمزاوى

العفو اختى الكريمه

نحن نفيد ونستفيد

تحياتى :)

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة