Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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 在一个jframe中的两个JPanel中使用两种绘制方法_Java_Swing_Jpanel_Paint_Paintcomponent - Fatal编程技术网

Java 在一个jframe中的两个JPanel中使用两种绘制方法

Java 在一个jframe中的两个JPanel中使用两种绘制方法,java,swing,jpanel,paint,paintcomponent,Java,Swing,Jpanel,Paint,Paintcomponent,我最近在尝试为我的框架创建覆盖时遇到了一个问题。框架由两个面板组成,一个GamePanel和一个overlypanel,每个面板都有自己的绘制方法。为了保持代码的整洁和效率,我将它们分开。不过,我现在遇到的问题是,我的paintComponent方法彼此重叠,导致一次只能看到一个绘制的面板 我知道这很可能是因为两个面板都覆盖了整个屏幕。然而,在覆盖面板上绘制的内容仅覆盖屏幕的一部分 目标是GamePanel将绘制某种类型的地图,然后overlypanel将在此地图顶部的给定位置绘制一个矩形 我的

我最近在尝试为我的框架创建覆盖时遇到了一个问题。框架由两个面板组成,一个
GamePanel
和一个
overlypanel
,每个面板都有自己的
绘制方法。为了保持代码的整洁和效率,我将它们分开。不过,我现在遇到的问题是,我的
paintComponent
方法彼此重叠,导致一次只能看到一个绘制的面板

我知道这很可能是因为两个面板都覆盖了整个屏幕。然而,在
覆盖面板上绘制的内容仅覆盖屏幕的一部分

目标是
GamePanel
将绘制某种类型的地图,然后
overlypanel
将在此地图顶部的给定位置绘制一个矩形

我的方法是错误的,还是我遗漏了什么

我的方法是错误的吗

对。可以将绘图操作分离到单独类中的单独方法中,但仍然可以使用单个方法完成整个绘制操作

假设有一个
Map
类和一个
draw(Graphics2D)
方法,还有一个
RectangularPlayer
类和一个
draw(Graphics2D)
方法。每个类都知道如何将自己的部分绘制到公共图形实例。在
GameField
类的
paintComponent(Graphics)
方法中,调用地图和玩家类的相关绘制方法,以及需要渲染的任何其他游戏元素