2

我正在创建一个 Java swing GUI,并且我已经格式化了一个 JPanel 以使用 GridLayout。我需要访问网格的特定“框”(即特定坐标),但我看不到这样做的方法。

我怎样才能做到这一点?

4

2 回答 2

3

您不应该依赖 GUI 代码(视图)来为您提供有关程序数据(模型)的信息。最好的解决方案是从一开始就“知道”哪个组件在哪里——也许你应该有一个数据结构(2D 数组?)来保存组件,并在将某些内容添加到网格时进行更新。

但是,如果您想要快速且非常肮脏的修复,则可以开始使用JPanel.getComponentAt(). 但是,这需要像素坐标,因此您需要进行一些逆向工程来计算给定方格占用了多少空间。网格方块之间的空间由您的GridLayout对象给出。无论如何都不推荐这样做。我只是为了完整性而将其包括在内(并且因为它是对您的问题的更直接的回答)。

于 2011-12-06T02:01:30.317 回答
1

GridLayout“容器被分成大小相等的矩形”中。您可以在希望显示为空的地方添加一个空的透明组件,例如new JLabel(""). 另请参阅GridBagLayout使用布局管理器

于 2011-12-06T01:49:18.927 回答