【问题标题】:How to get the inner frame in java swing?如何在java swing中获得内框?
【发布时间】:2013-08-06 20:07:52
【问题描述】:

我正在构建一个简单的“游戏”,作为使用 Java 开发应用程序等的教程。 我的Main 班级extends JFrame。它只是在屏幕上移动一个球。在达到我可以移动球可以移动的地步后,我开始与窗口的边界进行碰撞,并花了几分钟试图弄清楚为什么只有一些超出边界的 3 边然后在我之前远远超出顶部意识到边界是被遵守的,但它们是实际窗口的边缘,超出了显示区域。

如何设置Main 类以使边界成为可见区域?它会扩展一个不同的类吗?那么它在别的东西里面是什么?

【问题讨论】:

    标签: java swing frames


    【解决方案1】:
    • 很难说没有代码你可能做错了什么,
    • 但一方面,您不应该直接在 JFrame 中绘图,并且应该避免扩展 JFrame。
    • 改为扩展 JPanel,获取它的边界,然后在此 JPanel 中进行绘制。
    • 另外,请确保覆盖 JPanel 的 paintComponent(...) 方法,
    • 也可以在覆盖内调用super.paintComponent(g)
    • 将 JPanel 放入 JFrame 中显示。
    • 在进行此编码之前,请务必查看 Swing 绘图教程,因为在进行图形程序,尤其是动画程序时,您经常需要更改基本假设。

    【讨论】:

    • 是否需要将侦听器放在 JFrame 上,因为我将它们放在 Main extends JPanel 上,但它不起作用
    • @DoubleMx2:什么听众? “没有工作”告诉我们很少。了解为什么任何事情都不起作用的唯一方法是研究代码并进行调试。
    • 好吧,我在 JFrame 上附加了一个 KeyListener 以接收键盘输入,当我将 Main 更改为扩展 JPanel 时,我将 KeyListener 留在了 JPanel 上。然而,JPanel 似乎没有收到任何按键通知。 KeyListener 在附加到 JFrame 时起作用,但不是 JPanel。
    • @DoubleMx2 你会想要改变它,因为作为粗略的规则你应该避免使用 Swing 的 KeyListeners,但这应该是本网站上另一个问题的主题。您的主要问题已得到解答:不要在 JFrame 或其他顶级窗口内绘制。请改用 JPanel。
    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多