【发布时间】:2015-11-30 20:55:28
【问题描述】:
我的问题很容易解释:我想要一个/一些 JPanel,添加到 JFrame 中,用图像自己绘制。可悲的是最后一件事不起作用。供参考:图像路径正确,JPanel 大小与图像大小相同。 谢谢帮助:P
package frames;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import world.Terrain;
public class PanelTerrain extends JPanel {
private Image img;
private int x;
private int y;
private Image imga;
public PanelTerrain(Terrain terra, int x, int y) {
imga = new ImageIcon(terra.getPath()).getImage();
this.x = x;
this.y = y;
this.setBounds(x, y, 8, 8);
//this.setBackground(terra.getColor());
}
public void changeTerrain(Terrain t)
{
this.setVisible(false);
this.setBackground(t.getColor());
this.setVisible(true);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(imga, x, y, this);
}
}
【问题讨论】:
-
你能看到 jframe 中的 jpanel 吗? x,y 值是多少?如果您的面板和图像大小相同,那么 x,y 应该是 0
-
正如@FastSnail 所说:你是如何使用这个类的?您如何测试图像实际上是否被正确读取?您是否尝试将图像显示为 JOptionPane 中显示的 ImageIcon?如果是这样,它有效吗?考虑在 JPanel 周围放置一个临时边框,以清楚地看到它的实际大小。请发帖minimal reproducible example。
-
就像代码中仍然显示的那样,我使用颜色测试了面板,所以面板可以工作。 :P 我像这样使用它们: yArray[i] = new PanelTerrain(new Grass(), 150 + (i * 8) , 50 + 8 * ycord);面板应该出现的位置的 x / y re。因此,经过颜色测试,一切正常。通过简单的 system.out.print() 测试图像(路径)。但是对于提示,将尝试 JOptionPane()