我有一个关于 Java 和 JFrame
的问题。假设我有一个 JFrame
,我正在使用 GridLayout
。假设我在 JFrame
中添加了 JButton
,我怎样才能使用它的位置(按位置,我指的是 x 和 y,用于定义网格上的确切位置)。我已经尝试了几种方法,例如 getComponentAt(int x, int y)
,并且发现这些方法在与 GridLayout
结合使用时无法按预期工作,或者至少在我的案例中没有按预期工作。所以我尝试使用 getComponent()
,这看起来不错。
最新的方法,对我来说似乎是正确的(假设我有一个 JFrame
和一个有 7 行和 7 列的 GridLayout
,x 作为列,y 作为行):
public JButton getButtonByXAndY(int x, int y) {
return (JButton) this.getContentPane().getComponent((y-1) * 7 + x);
}
image http://www.freeimagehosting.net/newuploads/9d6hq.jpg
使用上面的代码,假设我想在 (4, 4) 处获取 JButton
,这意味着 JFrame
中的第 25 个 JButton,我将索引前 21 个首先添加按钮,然后再添加 4 个按钮,最后访问我想要的 JButton。问题是这仅在理论上有效。有什么想法吗?
P.S 很抱歉链接到外部网站,但堆栈溢出不允许我上传图片,因为我没有所需的声誉。
最佳答案
这example比较两种方法:
维护
List<JButton>
并以代数方式计算指数。扩展
JButton
并允许每个按钮保持其自己的网格位置。
关于java - 如何使用 GridLayout 从 JFrame 获取组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10831480/