尝试将图像绘制到JPanel上

时间:2014-04-01 22:33:38

标签: java image jpanel

很抱歉,我知道这个话题有很多信息,但我仍然被卡住了。我有两个面板mainPanel和sidePanel。我想要做的是将图像绘制到sidePanel。我的sidePanel将有其他组件,如按钮和标签。我可以使用JLabel将Image添加到sidePanel,但是,调整和定位图像是一个问题。因此,我正在尝试使用Graphics g将图像绘制到sidePanel上。如果有人可以帮助很多将不胜感激。感谢所有帮助.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();

    }

  }
`

1 个答案:

答案 0 :(得分:0)

取自bcash的回答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            
    }

}