我想使用一种方法来获取你想要绘制的内容(getImage()方法)但是我无法弄清楚如何将它绘制到paint方法中。 到目前为止:
public void getImage(String location,int x,int y,int size){
Image image = new ImageIcon(location).getImage();
//paint(image); Thats my question
}
public void paint(Graphics g){
}
谢谢:)
答案 0 :(得分:1)
repaint()
方法强制重绘,然后在paint方法中绘制新图像。
代码看起来像这样:
private Image someImage;
public void getImage(...)
{
someImage = new ImageIcon(location).getImage();
repaint(); //will make java call the paint-method in a moment
}
public void paint(Graphics g)
{
if(someImage!=null)
//paint someImage here
}
有一篇关于Painting in AWT and Swing如何运作的长篇文章。请务必阅读非常简短的章节Swing Painting Guidelines,其中包含最重要的内容。
答案 1 :(得分:1)
您需要设置一个从JPanel扩展的类和另一个与其无关的类来描述您要绘制的图像。
假设您有两个类, Window (扩展JPanel)和图像(加载要在JPanel中绘制的图像)
如果要将 Image 中的图像绘制到 Window 类中,则必须在 Window中实例化 Image class。
图像应该有一个方法,可以在 Window 中用于在 Window 中绘制图像,如下所示:
private void drawMe(Graphics g){
g.drawImage(someImage, x, y, null);
}
并在 Window 类(从JPanel扩展)中我建议您覆盖paintComponent方法,而不是绘制。在该方法中,您应该调用 Image 的drawMe()方法并将Graphics作为参数传递。像这样:
private Image image = new Image("filePath.jpg", 10, 10); //based on the arguments you setup in the contructor
public void paintComponent(Graphics g){
image.drawMe(g); //access Image's drawMe() method and pass graphics to it
}
所有绘图和图像位置都由 Image 类处理,您使用 Window 类所做的一切都会让它显示在JPanel上。