之前我们已经生成了一个空白的窗口,接下来我们要在这个窗口上添加背景。
我们新建一个MyPanel的类用来单独设置面板。
MyPanel是继承于JPanel的一个子类。导入所需的包。
package view;
import javax.swing.JPanel;
public class MyPanel extends JPanel{
}
然后新建一个图片类型的变量用来存放我们的背景。导入相关所需的包。
package view;
import java.awt.Image;
import javax.swing.JPanel;
public class MyPanel extends JPanel{
public Image bgImage;
}
接着我们使用
this.bgImage = Toolkit.getDefaultToolkit().getImage(“images/bg01.jpg”);
把背景图片放入,导入相关的包。
package view;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class MyPanel extends JPanel{
public Image bgImage;
public MyPanel()
{
//设置背景
this.bgImage = Toolkit.getDefaultToolkit().getImage("images/bg01.jpg");
}
}
现在图片创建好了,接下来我们设置背景图片的一些参数,设置在窗口的位置。
我们使用重构父类的paintComponent()方法来设置自记得背景图。
package view;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class MyPanel extends JPanel{
public Image bgImage;
public MyPanel()
{
//设置背景
this.bgImage = Toolkit.getDefaultToolkit().getImage("images/bg01.jpg");
}
public void paintComment(Graphics g)
{
super.paintComponent(g);
g.drawImage(this.bgImage, 0,
0-this.bgImage.getHeight(this),
this.bgImage.getWidth(this),
this.bgImage.getHeight(this),
null);
g.drawImage(this.bgImage, 0,0,
this.bgImage.getWidth(this),
this.bgImage.getHeight(this),
null);
}
}
这里的paintComment()是自动调用的。 这里还有一些疑惑的地方,就是不知道具体是怎么实现的自动调用,这个就先放下吧。。。
然后我们去BaseFrame类中新建一个MyPanel类型的对象。新建 - > 设置位置-> 添加到窗口中
新建:this.myPanel = new MyPanel();
设置位置 : this.myPanel.setBounds(0,0,frameWidth, frameHeight);
添加组件: this.add(myPanel);
package view;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class BaseFrame extends JFrame{
public static int frameWidth = 512,
frameHeight = 768;
public MyPanel myPanel;
public BaseFrame()
{
super("飞机大战");
setBounds(100, 0, frameWidth, frameHeight);
setLayout(null);
this.myPanel = new MyPanel();
this.myPanel.setBounds(0,0,frameWidth, frameHeight);
this.add(myPanel);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}