1

我有一个关于 Java 的问题JFrame,特别是关于 Java 的问题。假设我有一个JFrame我正在使用的GridLayout. 假设我在JButtons 中添加了 s,JFrame我怎样才能使用它的位置访问我想要的那个(通过位置,我的意思是 ax 和 ay,用于定义网格上的确切位置)。例如,我尝试了几种方法,getComponentAt(int x, int y)并且发现这些方法在与 结合使用时不能按预期工作GridLayout,或者至少在我的情况下不能按预期工作。所以我尝试使用getComponent(),这似乎很好。

对我来说似乎在正确轨道上的最新方法是(假设我有 aJFrameGridLayout7 行和 7 列,x 作为列,y 作为行):

public JButton getButtonByXAndY(int x, int y) {
    return (JButton) this.getContentPane().getComponent((y-1) * 7 + x);
}

图片 http://www.freeimagehosting.net/newuploads/9d6hq.jpg

使用上面的方法,假设我想获取JButtonat (4, 4),即 中的第 25 个 JButton JFrame,我首先会索引前 21 个按钮,然后再添加 4 个,最后访问我想要的 JButton。问题是这仅在理论上起作用。有任何想法吗?

PS 很抱歉链接到外部网站,但堆栈溢出不允许我上传图片,因为我没有所需的声誉。

4

2 回答 2

2

示例比较了两种方法:

  1. 维持 aList<JButton>并以代数方式计算指数。

  2. 扩展JButton并允许每个按钮保持其自己的网格位置。

于 2012-05-31T13:57:33.770 回答
1

GridLayout 从 0,0 开始,JButton 在(GridLayout 中的 4,4 位置)开始,这意味着 JFrame 中的第 32 个(4*7+4 不是 3*7+4)JButton。对不起,如果我误解了问题:(

你可以试试:

   public static JButton getButtonByXAndY(int x, int y) {
        return (JButton) f.getContentPane().getComponent(y * 7 + x);
    }
于 2012-05-31T12:55:45.143 回答