java - 如何使用 GridLayout 从 JFrame 获取组件?

标签 java swing jframe jbutton grid-layout

我有一个关于 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比较两种方法:

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

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

关于java - 如何使用 GridLayout 从 JFrame 获取组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10831480/

相关文章:

java - "Un-rollover"显示 JOptionPane 时的 JButton

java - 有没有办法在全局范围内收听 swing 中新打开的窗口?

java - JFrame 中的 JCommandButton

java - GetChangeGui 手册 JFrame

java - 您能否在不同的 OSGi 包中包含 JSF 自定义组件?

java - JProgressBar 不会更新

java - Retrofit 需要太多时间才能得到响应

java - 将 2 个窗口合并在一起

java - JSoup - 选择多个项目

java - Weka 如何使用 Java 代码预测新的未见过的实例?