gpt4 book ai didi

java - 在java中获取组件的坐标

转载 作者:行者123 更新时间:2023-12-02 07:12:38 28 4
gpt4 key购买 nike

我有一个 JLayeredPane,在 JLayeredPane 内部是一个 JInternalFrame。我需要的是 JInternalFrame 中内容 Pane 的边界(x 位置、y 位置、宽度、高度)。边界需要与 JLayeredPane 相关。我的问题是边框、标题栏,而且我不确定 JInternalFrame 的其他内容是否干扰了我的计算。相差几个像素。

这是我尝试计算它的方法。此代码位于 JInternalFrame 中:


Rectangle area = new Rectangle(
getX() + 2, //The x coordinate of the JInternalFrame + 2 for the border
getY() + ((javax.swing.plaf.basic.BasicInternalFrameUI) getUI()).getNorthPane().getHeight(), //The Y position of the JinternalFrame + theheight of the title bar of the JInternalFrame
getContentPane().getWidth() - 2, //The width of the Jinternals content pane - the border of the frame
getContentPane().getHeight() //the height of the JinternalFrames content pane
);

我需要获取内部框架的内容 Pane 的位置。 alt text

最佳答案

相对于什么坐标?屏幕? window ?

调用 getLocation() 将为您提供相对于窗口层次结构中组件父级的坐标。

SwingUtilities有几种方法可以将坐标从一个引用系转换到另一个引用系。因此,为了补偿标题栏和框架,您可以这样做:

JInternalFrame iframe = ...
Container c = iframe.getContentPane();
Rectangle r = c.getBounds();
r = SwingUtilities.convertRectangle(c.getParent(), r, iframe.getParent());

关于java - 在java中获取组件的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4269540/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com