我正在做一个小的国际象棋游戏,它有类whitePawnPiece
扩展whitePiece
扩展chessMain
扩展chessGUI
。
chessGUI
是JFrame
, whitePawnPiece
是我想做whitePawnIcon.paintIcon (...,...,xPos, yPos)
的地方。
好吧,首先我不太了解前两个参数,但从我读到的第一个可以是null
,第二个应该是JFrame
。
我的问题是:我如何使用第二个参数?我使用NetBeans,它接受第一个参数为null
,但第二个,无论我放什么,它都会给出一个错误"找不到符号"或其他东西。
PS:我正在使用NetBeans IDE做GUI,但在阅读代码后,我认为自己编程GUI更容易,更好,所以这是我第一次尝试编程GUI本身:)
还有一个额外的问题:当我使用NetBeans IDE时,我在覆盖图像时遇到了一些问题,直到我将布局设置为绝对(我使用标签来处理图标)。我现在会不会有同样的问题?我应该使用默认布局还是有一个更好的国际象棋程序,有很多覆盖(棋盘,棋子,选择/可能的移动标记)?
这有点令人困惑,但是…
Icon
声明paintIcon
接受四个参数…
-
Component
-
Graphics
-
int x
-
int y
是对某个组件的引用,可能是与Graphics
上下文相关联的组件,因为Component
可能会被用作ImageObsever
来监视图标在需要更新时的变化,并可能提供其他有用的信息
Graphics
上下文是要绘制图像的实际位置(图形输出)。
Graphics
上下文的参考。这可以通过扩展组件(如JPanel
),覆盖它的paintComponent
方法来获得。这将使您能够访问Graphics
上下文,该上下文可用于在此油漆循环中绘制内容。永远不要维护对非您自己创建的Graphics
上下文的引用。
然后调用paintIcon
,传递对组件和Graphics
上下文的引用。
看一下执行自定义绘画,在AWT和Swing中绘画和2D图形
说了这么多,我认为你会使用BufferedImage
s(或Image
)比Icon
更简单。阅读/加载图片了解更多细节