Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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 2D图形-组件中项目的优先级_Java_Graphics_2d_Paintcomponent_Java 2d - Fatal编程技术网

Java 2D图形-组件中项目的优先级

Java 2D图形-组件中项目的优先级,java,graphics,2d,paintcomponent,java-2d,Java,Graphics,2d,Paintcomponent,Java 2d,我有一个简单的问题。我不熟悉Java 2D API,所以我的问题是: 是否需要手动设置在paintComponent()中绘制的内容的优先级?您绘制的第一个内容将是最后面的部分。所以 public void paintComponent(Graphics g) { g.drawRect(10, 10, 80, 30); // Drawn in back g.drawRect(20, 20, 70, 40); // Drawn in middle g.drawRect(10

我有一个简单的问题。我不熟悉Java 2D API,所以我的问题是:


是否需要手动设置在paintComponent()中绘制的内容的优先级?

您绘制的第一个内容将是最后面的部分。所以

public void paintComponent(Graphics g) {
    g.drawRect(10, 10, 80, 30); // Drawn in back
    g.drawRect(20, 20, 70, 40); // Drawn in middle
    g.drawRect(10, 10, 10, 10); // Drawn in front
    ...
}

如果您让Java先绘制某个对象,它将首先绘制,并且您在上面绘制的任何对象都将绘制在您绘制的第一个对象之上。

您不能指定优先级,但可以指定每个对象的绘制顺序(在顺序代码中)。这就是一个例子

public void paint(Graphics screen) {
    sortByDepth(screen);
    backFaceCulling(screen);
    applyProjection(screen);
    drawCube(screen);
}
下面这本书可以帮上大忙:。此外,您可能希望查看是否要绘制以下内容:

另见:


我希望调用一个函数,该函数将从paint component屏幕中删除所有内容,然后开始添加回内容。但是,当我使用clearRect()函数时,它会清除屏幕,但我无法对此进行绘制。您在调用drawRect()之前调用clearRect()对吗?