【问题标题】:Get the widget at a particular row and column in a Swing GridLayout获取 Swing GridLayout 中特定行和列的小部件
【发布时间】:2013-05-18 22:18:33
【问题描述】:

我正在开发一个摆动小程序,其中包含一个带有 GridLayout 的 JPanel。
放置在此布局中的小部件的行和列对小部件很重要。目前,我没有保留对小部件的引用(尽管它们是 Swing 小部件的子类,因此它们很容易修改)。

在某个阶段,我需要此网格中的一个小部件来处理其相邻的小部件;即 GridLayout 中其左、右、上、下的小部件必须可被小部件访问。
我是否可以通过知道布局中的行号和列号从 GridLayout 获取对这些小部件的引用?有没有相关的GridLayout方法?
(我相信 Qt GUI 框架有一个方法)

否则,我想我必须将小部件的引用保存在一个数组中。
谢谢

【问题讨论】:

  • 除了将您的小部件放入 JPanel 之外,还将其放入一个 widget[][] 数组中。然后你可以通过数组索引获取小部件。

标签: java swing grid-layout


【解决方案1】:

我能否通过 GridLayout 获得对这些小部件的引用 知道他们在布局中的行号和列号?有没有相关的 GridLayout 方法?

【讨论】:

  • 这行得通,虽然看起来很不优雅(我将键设为行号和列号用逗号分隔的字符串)。需要担心一些转换和索引绑定错误。
  • 从 getClientProperty 输出的 Sting 值可以是 EventHandler 的加速器
  • "定位包含指定位置的可见子组件";这让我相信(也因为它在我的代码中引发了一个无法解释的错误)findComponent 的参数是像素位置,而不是布局的行和列
【解决方案2】:

我是否能够通过知道布局中的行号和列号从 GridLayout 中获取对这些小部件的引用?

没有 GridLayout 方法,但您可以从面板本身获取组件。

Container.getComponent(...);

当然,您需要一些数学运算才能将行/列转换为单个索引值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2018-04-17
    • 1970-01-01
    • 2022-06-15
    • 2017-05-16
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多