我正在创建一个Java swing GUI,我已经格式化了一个JPanel来使用GridLayout。我需要访问网格的特定“框”(即特定坐标),但我看不到这样做的方法。
我该怎么做?
答案 0 :(得分:3)
您不应该依赖GUI代码(视图)来为您提供有关程序数据(模型)的信息。最好的解决方案是"知道"哪个组件从一开始就在哪里 - 也许你应该拥有一个数据结构(2D数组?)来保存组件,并且只要有什么东西被添加到网格中就会更新。
如果你想要一个快速而又非常脏的修复,你可以开始用JPanel.getComponentAt()
玩游戏。这需要像素坐标,因此您需要进行一些逆向工程来确定给定网格方占用多少空间。网格方格is given by your GridLayout
object之间的空格。但这不是不推荐。我只是为了完整性而将它包括在内(因为它对你的问题的回答更直接)。
答案 1 :(得分:1)
在GridLayout
中,“容器被分成相等大小的矩形。”您可以在要显示为空的位置添加空的透明组件,例如new JLabel("")
。另请参阅GridBagLayout
和Using Layout Managers。