当未最大化时,线条被涂在错误的位置



我扩展了JPanel并重写了paint方法,以便在面板中某些JButton的位置之间绘制一些额外的线条。但是,只有在 gui 最大化时才能正确绘制线条,否则它们将完全以错误的偏移量绘制。

绘制我正在使用的线条("rootNode"和"child"都是JButtong是覆盖paint方法的Graphics参数):

Point sourcePoint = new Point(rootNode.getLocation());
Point destPoint = new Point(child.getLocation());
SwingUtilities.convertPointToScreen(sourcePoint, rootNode.getParent());
SwingUtilities.convertPointToScreen(destPoint, child.getParent());
g.drawLine(sourcePoint.x, sourcePoint.y, destPoint.x, destPoint.y);

未最大化时不正确线条的图片:http://postimage.org/image/ws0yo9chf/最大化时的正确图片:http://postimage.org/image/fq84m5xmb/

只是为了掩盖评论。 我认为在这种情况下,您不想转换为屏幕坐标。

paintComponent(...)方法的Graphics上下文很可能是为组件坐标系设置的。

JavaDoc for Graphics.drawLine(...) 声明:

使用当前颜色在点 (x1, y1) 和 (x2, y2) 在此图形上下文的坐标系中。

除非您通过 Graphics.translate(...)Graphics2D.setTransform(...) 对其进行了更改,否则将为组件设置坐标系。

除了在错误的位置之外,转换为屏幕坐标将具有根据窗口在屏幕上的位置更改线条位置的效果:)

相关内容

  • 没有找到相关文章

最新更新