jFrame不显示图像

时间:2015-07-13 15:50:54

标签: java swing

所以,我想使用我必须设置jFrame背景的代码而不添加任何来自其他类的内容(比如在jPanel中使用此代码,然后将该面板添加到jFrame)。我想做这堂课的一切。我真的不知道该怎么做,所以我尝试了这个,但这段代码没有显示图像!

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class panel extends JFrame{
    Image img;

    public void paintComponent(Graphics g){
        super.paintComponents(g);

        g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
        g.dispose();
    }

    public panel(){
        img=new ImageIcon(getClass().getResource("bg_login.jpg")).getImage();
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        pack();
        setVisible(true);
    }


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

1 个答案:

答案 0 :(得分:0)

paintcomponent()没有jframe方法,因为它不是jcomponent而是容器。您可以创建一个面板并覆盖paintcomponent方法setcontentpane jframe到该小组

例如

public class panel extends JPanel {

    Image img;

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (img != null) {
            g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
        }
        // g.dispose();
    }

    public panel() {
         img=new ImageIcon(getClass().getResource("bg_login.jpg")).getImage();

    }

    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        jFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        panel panel = new panel();
        jFrame.setContentPane(panel);
        jFrame.pack();
        jFrame.setVisible(true);
    }
}