Java Swing - 创建带有按钮和动态游戏板的窗口

标签 java image swing jpanel

我是 Java Swing 新手,正在开发一个简单的应用程序,该应用程序在窗口中显示棋盘游戏和可移动棋子。

现在,我有一个足够漂亮的界面:应用程序构建在派生自 JFrame 的特殊 Window 类上,并带有 paint重写方法以使用 drawImage 显示棋盘和棋子(迭代棋子以收集棋子的位置信息)

但是,当我尝试向整个游戏窗口添加一些按钮和文本显示区域时,出现了问题。在明确单击它们之前,它们都不会被显示。经过一些研究,我发现在这种情况下覆盖油漆会使事情变得困惑;显然,您可以使用 paint 或使用按钮等,但两者都不是真正/容易的。

作为一种替代方法,我遇到了一个教程,该教程展示了如何在 JPanel 上绘制图像,我想我可以在棋盘/部件上使用它,然后在布局时像任何其他按钮或小部件一样对待( ?)在我走进任何死胡同之前(似乎是一个愚蠢的问题,但相信我......),我想问:这是一个好方法吗?或者,还有更好的方法?

最佳答案

听起来您没有从 paint 方法中调用 super.paint(g) 。实际上,您不应该在像 JFrame 这样的顶级容器中拥有自定义绘制功能。

理想情况下,您应该使用该替代方法并将其移至新的基于 JComponent 的类。这里你需要重写paintComponent并调用super.paintComponent(g)。如果您需要向新组件添加子组件,那么 JPanel 无疑是一个很好的容器。

关于Java Swing - 创建带有按钮和动态游戏板的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512450/

相关文章:

java - 在java中将垂直字符串中的各个字母居中

java - 如何开始使用 Java 服务器端技术?

java - Java 中的 xml.etree.ElementTree 等价物

java - 将POJO转换为protocol buffer请求消息

javascript - 如何使每个图像的功能工作一次

r - Shiny 的标题面板 : how to put title and image at same height?

java - Selenium :moveByOffset() 不起作用

python - 如何关闭已经显示的图像并显示另一张图像?

java - 如何在不使用修饰符的情况下为 JRadioButton 设置快捷键

java - foo.jar 未标记为可执行文件