使JFrame标题栏不计算像素

tre*_*f95 1 java swing jframe

我正在用Java编写一个游戏,作为一种教我更多关于Java和游戏编程的方法.但是,我有一个问题.我的JFrame上的标题栏占用了29个Y像素的空间.因此,我的计划空间比我计划的少.有没有办法让它成为JFrame Canvas的一角是点(0,0)而不是(0,29)?谢谢

Hov*_*els 7

答案很简单:不要在JFrame的paint(...)方法中绘制,而是在JPanel的paintComponent(...)方法中绘制,然后将JPanel作为JFrame的contentPane.这个解决方案在Swing Tutorials绘画部分中有详细描述,有几个原因可以做到这一点,包括:

  • 您不会冒险绘制不应绘制的内容,包括边框和标题栏.
  • 你可以获得Swing默认双缓冲的优势,如果你做任何动画,它可以带来巨大的改进.

  • @MadProgrammer Alternate:*"你可以做的是在你的线程中生成一个BufferedImage,然后......"*..在标签中显示它.调用`label.repaint()`来更新GUI. (3认同)
  • @JakeKing你不能.你可以做的是在你的线程中生成一个`BufferedImage`并绘制它,然后让屏幕从它的`paintComponent`方法中渲染它.此外,请勿从事件调度线程以外的任何线程更新任何UI元素 (2认同)