Java和Windows8工具栏

Java和Windows8工具栏,java,windows,graphics,titlebar,Java,Windows,Graphics,Titlebar,我正在用Java编写一个程序,W8中的标题栏有问题。由于某种原因,共字(0,0)出现并隐藏在标题栏中。如果我想在(0,0)处绘制一些东西,我必须将图形对象转换为(0,10)以使其显示 我目前有: g.setColor(Color.BLACK); g.fillRect(0, 0, Config.WIDTH + 10, Config.HEIGHT + 10); g.translate(0, 10); g.setColor(Color.W

我正在用Java编写一个程序,W8中的标题栏有问题。由于某种原因,共字(0,0)出现并隐藏在标题栏中。如果我想在(0,0)处绘制一些东西,我必须将图形对象转换为(0,10)以使其显示

我目前有:

        g.setColor(Color.BLACK);
        g.fillRect(0, 0, Config.WIDTH + 10, Config.HEIGHT + 10);
        g.translate(0, 10);
        g.setColor(Color.WHITE);
        g.setFont(fonts.getFont(0));
        g.drawString("FPS: " + scr.fps, 0, 0);

这是可行的,但是我想删除
g.translate(0,10)以防这一行后来导致问题。

问题与Windows 8无关,而是您已覆盖顶层容器的绘制

框架边框正在窗口边界内绘制

框架有一个内容窗格,用于布局内容或执行自定义绘制

不要覆盖顶级容器的
paint
,而是创建一个自定义组件(从
JPanel
扩展)并覆盖它的
paintComponent
方法

然后,您可以将其添加到框架内容窗格或替换框架内容窗格

退房


为了进一步解释

我在一个画在JFrame上的JPanel上画画,因此为什么(0,10)是左上方而不是(8,38)。原来我出于某种原因使用的字体想要开始画图——比应该的位置高出10像素。谢谢你的回复!这是因为字体希望在上升线处开始渲染(
FontMetrics#getAscent
)。查看和了解更多详细信息