我是Java Swing的新手,正在研究一个简单的应用程序,它在窗口中显示棋盘游戏和可移动部件。
现在,我有一个足够好的界面:应用程序构建在一个派生自Window
的特殊JFrame
类上,覆盖paint
方法以显示板和块使用drawImage
(迭代碎片以收集位置信息)
但是,当我尝试在整个游戏窗口中添加一些按钮和文本显示区域时,出现了问题。在明确点击它们之前,它们都没有被显示。通过一些研究,我发现在这样的情况下,覆盖油漆会使事情变得混乱;显然,你可以搞砸paint
或使用按钮等,但不是真的/容易两者。
作为一种替代方法,我遇到了一个教程,展示了如何将图像绘制到JPanel上,我想我可以在板/片上使用,然后在铺设时将其视为任何其他按钮或小部件( ?)在我走下任何一条死胡同的街道之前(似乎是一个愚蠢的问题,但请相信我......),我想问:这是一个好方法吗?或者,还有更好的方法?
答案 0 :(得分:2)
听起来您没有在super.paint(g)
方法中调用paint
。实际上,您不应该在JFrame
等顶级容器中使用自定义绘制功能。
理想情况下,您应该使用该替代方法并将其移至基于JComponent
的新类。在这里,您需要覆盖paintComponent
并呼叫super.paintComponent(g)
。如果您需要将子组件添加到新组件,那么肯定JPanel
是一个很好的容器。