Java如何从另一种方法中利用JPanel?
我想使用一个方法来获取您试图绘制的内容(getImage()方法),但我不知道如何将其绘制到paint方法中。 到目前为止:Java如何从另一种方法中利用JPanel?,java,image,swing,jpanel,paint,Java,Image,Swing,Jpanel,Paint,我想使用一个方法来获取您试图绘制的内容(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){ }
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){
}
谢谢:)嗯,你做这件事不容易。但是,您可以通过调用该方法强制重新绘制,然后在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
}
有一篇关于工作原理的长篇文章。请务必阅读包含最重要外卖的非常简短的一章。您需要设置一个从JPanel扩展而来的类和另一个与之无关的类,该类描述您试图绘制的图像 假设您有两个类,Window(扩展了JPanel)和Image(在其中加载要在JPanel中绘制的图像) 如果要将图像从image绘制到Window类中,必须在Window类中实例化image 图像中应包含一种方法,可在窗口中使用该方法在窗口中绘制图像,如下所示: 在Window类(从JPanel扩展而来)中,我建议您重写paintComponent方法,而不是paint。在该方法中,您应该调用Image的drawMe()方法并将图形作为参数传递。像这样:
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上。您不应该在JPanel的
paint(…)
方法中绘制任何东西,而应该使用它的paintComponent(…)
方法。如果您想成功完成此操作,您需要阅读教程。x
、y
和size
参数的具体含义是什么?为了更快地获得更好的帮助,请发布一个。无论OP请求什么,您都希望将其更改为paintComponent方法,而不是paint。是的,这是一个非常有效的注释。我链接到的指南中也描述了这一点。我只是尽量靠近原始代码片段。为什么我必须使用paintComponent?paint()调用了其他三个方法来创建JFrame如果您自己重写paint(),可能会导致其他未知问题:
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
}