1

Sorry guys I know there is a lot of info on this topic, but I'm still stuck. I have two panels mainPanel and sidePanel. What I'm trying to do is paint an Image to the sidePanel. My sidePanel will have other components such as buttons and labels. I can add the Image to the sidePanel using a JLabel, however, sizing and positioning the image is a problem. Therefor, I'm experimenting with Graphics g to paint the Image onto the sidePanel instead. If anyone could help much would be appreciated. Thanks all that help.` import java.awt.BorderLayout;

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

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



       public class Gui extends JFrame {
    private JPanel j;
    private ImageIcon i;

    public Gui(){
        this.setSize(800,600);
        this.setUp();
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void setUp(){
        j = new JPanel();
        JPanel contentPanel = new JPanel();
        contentPanel.setLayout(new BorderLayout());
        contentPanel.setSize(new Dimension(800,600));
        JPanel mainPanel = new JPanel();
        JPanel sidePanel = new JPanel();

        sidePanel.setPreferredSize(new Dimension(200,600));
        mainPanel.setPreferredSize(new Dimension(600,600));

        ImagePanel v = new ImagePanel();
        //v.setBackground(Color.BLUE);
        v.setPreferredSize(new Dimension(100,100));

        sidePanel.add(v);

        mainPanel.setBackground(Color.BLACK);
        sidePanel.setBackground(Color.RED);


        contentPanel.add(sidePanel, BorderLayout.WEST);
        contentPanel.add(mainPanel, BorderLayout.CENTER);

        this.add(contentPanel);


    }
       private class ImagePanel extends JPanel{
        public void createImage(Graphics g){
            super.paintComponent(g);
            ImageIcon i = new       ImageIcon("/GUI Practice/src/images.jpeg");
            Image ii = i.getImage();
            g.drawImage(ii, 10, 10, 90, 90, Color.WHITE, this);

            repaint();
            validate();
            updateUI();



        }

    }
           public static void main(String [] args){

        Gui g = new Gui();

    }

  }
`
meddy
  • 385
  • 6
  • 21

1 Answers1

0

Taken from bcash's answer here.

public class ImagePanel extends JPanel {

    private BufferedImage image;

    public ImagePanel() {
       try {                
          image = ImageIO.read(new File("image name and path"));
       } catch (IOException ex) {
            // handle exception...
       }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, null); // see javadoc for more info on the parameters            
    }

}
Community
  • 1
  • 1
Anubian Noob
  • 13,426
  • 6
  • 53
  • 75