在这里找到的。
http://topic.csdn.net/u/20090326/21/a4ca9989-631e-42d1-8f4e-7d6cd6efa14f.html
原来核心是重载paintComponent绘制方法。原来的代码给我改过了。先看原代码会好点,他的注释很详细!
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class JImagePanel extends JPanel
{
public static final int TENSILE = 1; // 拉伸
public static final int CENTRE = 2; // 居中
public static final int TILED = 3; // 平铺
private Image backGround = null;
private int displayMode = 2;
public JImagePanel(String image, int displayMode)
{
this(Toolkit.getDefaultToolkit().getImage(image), displayMode);
}
public JImagePanel(Image image, int displayMode)
{
super();
this.displayMode = displayMode;
backGround = image;
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
if (backGround != null)
{
int width = getWidth();
int height = getHeight();
int imageWidth = backGround.getWidth(this);
int imageHeight = backGround.getHeight(this);
switch (displayMode)
{
case CENTRE:
{
int x = (width - imageWidth) / 2;
int y = (height - imageHeight) / 2;
g.drawImage(backGround, x, y, this);
break;
}
case TILED:
{
for (int ix = 0; ix < width; ix += imageWidth)
{
for (int iy = 0; iy < height; iy += imageHeight)
{
g.drawImage(backGround, ix, iy, this);
}
}
break;
}
case TENSILE:
{
g.drawImage(backGround, 0, 0, width, height, this);
break;
}
}
}
}
}
分享到:
相关推荐
g.drawImage(backgroundImage, 0, 0, this.getWidth(), this.getHeight(), this); } } ``` 这里的`g.drawImage()`方法将图片绘制到组件上,参数分别表示图片源、目标坐标和大小。`this.getWidth()`和`this....
this.backgroundImage = backgroundImage; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(backgroundImage, 0, 0, this); } } ``` 2. **加载和设置图片*...
this.backgroundImage = image; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(backgroundImage, 0, 0, this.getWidth(), this.getHeight(), null); } }...
private Image backgroundImage; public MyPanel(Image image) { backgroundImage = image; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(background...
这个场景中,我们看到一个名为"java实现背景图"的项目,它包含了一个名为`BackGround.jar`的可执行Java档案,一个源代码文件`BackGround.java`,以及一张可能用于设置背景的图片`Mac.jpg`。下面我们将详细讨论如何在...
private Image background; public BackgroundPanel(String imagePath) { background = new ImageIcon(imagePath).getImage(); } @Override protected void paintComponent(Graphics g) { super....
首先创建一个`ImageIcon`对象,然后可以通过它的`getImage()`方法获取到一个`Image`对象。 2. **使用`JLabel`**:可以利用`JLabel`的构造函数直接传入`ImageIcon`对象来显示图片。 3. **使用`JButton`**:同样地,也...
import javax.swing.JPanel; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JLabel; import java.net.URL; ``` 2. **读取图片**: ...
通过Java Swing库中的`JFrame`和`JPanel`实现了一个游戏窗口,在该窗口中动态显示了多个移动的鱼。 #### 二、代码结构分析 ##### 1. `FishDemo`类 这是程序的入口类,通过`main`方法启动程序。主要功能包括: - ...
- `drawImage(Image img, int x, int y, ImageObserver observer)`:在指定位置绘制图像。 - 参数: - `img`:要绘制的图像对象。 - `x` 和 `y`:指定绘制图像的左上角坐标。 - `observer`:图像观察者,用于...
Image image = ImageIO.read(getClass().getResource("image/tubiao.png")); this.setIconImage(image); }catch(Exception e){ } this.setBounds(400,200,230,290); this.setTitle("计算器"); this....
JPanel backgroundPanel = new JPanel(){ public void paintComponent(Graphics g) { g.drawImage(new ImageIcon("image\\loginframe1.jpg").getImage(), 0, 0,500,300, null); super.paintComponent(g); } };...
BufferedImage backgroundImage = ImageIO.read(new File("path_to_your_image.jpg")); ``` 3. **自定义JPanel**: 创建一个继承自JPanel的类,并重写paintComponent()方法,以便在该方法中绘制背景图片。 ```...
ImageIcon m=new ImageIcon("image//denglu.jpg"); JLabel background = new JLabel(m); this.getLayeredPane().add(background ,new Integer(Integer.MIN_VALUE ) ); background.setBounds(0,0,m....
提供的`set-image-as-background-image-in-jframe.pdf`文件可能包含了更详细的解释和示例代码,你可以查阅以获取更多信息。记得在实际编程时,确保正确处理异常,以及资源的释放,以保持程序的健壮性和效率。
例如,`BufferedImage backgroundImage = ImageIO.read(imgURL);` 用来从指定的URL加载图像。 - **图像绘制**:通过覆盖 `paintComponent(Graphics g)` 方法来自定义组件的绘制逻辑。在 `Bjpanel` 类中,会根据当前...
setBackground(Color.BLACK); setFocusable(true); requestFocusInWindow(); addKeyListener(this); playerPlane = new Plane(); // 假设Plane类已经定义好 timer = new Timer(16, this); // 每秒60帧 ...