Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用paintComponent()绘制不同的对象?_Java_Swing_Jpanel_Graphics2d_Paintcomponent - Fatal编程技术网

Java 如何使用paintComponent()绘制不同的对象?

Java 如何使用paintComponent()绘制不同的对象?,java,swing,jpanel,graphics2d,paintcomponent,Java,Swing,Jpanel,Graphics2d,Paintcomponent,我试图在JPanel中绘制一些东西。我正在画形状(作品),我还想用图片填充JPanel。 但是paintComponent()只接受一个参数。当我有一些额外的代码来绘制形状时,这就变得复杂了 我的paintComponent()方法当前如下所示: public void paintComponent(Graphics g) { g2 = (Graphics2D) g; for (int i = 0; i < shapes.size(); i++) { S

我试图在
JPanel
中绘制一些东西。我正在画形状(作品),我还想用图片填充JPanel。 但是
paintComponent()
只接受一个参数。当我有一些额外的代码来绘制形状时,这就变得复杂了

我的paintComponent()方法当前如下所示:

public void paintComponent(Graphics g) {


    g2 = (Graphics2D) g;
    for (int i = 0; i < shapes.size(); i++) {
        Shape s = (Shape) shapes.get(i);
        if (s != null)
            g2.draw(s);
    }
}
公共组件(图形g){
g2=(图2d)g;
对于(int i=0;i
我到处找了很多,找不到一个方法来做这件事


有人知道怎么做吗,或者知道一些解决方法吗?

就像你绘制形状的方法一样,你需要在类中维护对你想要绘制的图像的引用,并以几乎相同的方式引用它们

以下是关于各种主题的
paintComponent
中的所有绘图图像示例


注意-我可能误解了这一点,但你不应该自己调用
paintComponent
。Swing中的重绘引擎代表您调用它,就像您绘制形状的方法一样,您需要在类中维护对要绘制的图像的引用,并以大致相同的方式引用它们

以下是关于各种主题的
paintComponent
中的所有绘图图像示例


注意-我可能误解了这一点,但你不应该自己调用
paintComponent
。Swing中的重绘引擎代表您调用了它

看看这个你有super.paintComponent(g)吗?是的,我不小心漏掉了它,因为我删除了一些评论。谢谢你Ali Alamiri,但我真正的问题是我将图像作为图形对象传递。这变得很复杂,因为在paintComponent()中绘制的形状也作为图形对象传入。我的错。忽略我最后的评论。我刚刚添加了g2.drawImage(图像[0],0,0,null);在paintComponent()中。并重新绘制();谢谢你们的回答!看看这个,你有super.paintComponent(g)吗?是的,我不小心漏掉了它,因为我删除了一些评论。谢谢阿里·阿拉米里,但我真正的问题是,我把图像作为图形对象传递。这变得很复杂,因为在paintComponent()中绘制的形状也作为图形对象传入。我的错。忽略我最后的评论。我刚刚添加了g2.drawImage(图像[0],0,0,null);在paintComponent()中。并重新绘制();谢谢你们的回答!