Java 使用Grix、gridy删除JTextField

Java 使用Grix、gridy删除JTextField,java,eclipse,swing,Java,Eclipse,Swing,我想知道是否可以使用 GridBagLayout和删除,如下所示 PANEL.remove(gridx.5,gridy.5)--

我想知道是否可以使用 GridBagLayout和删除,如下所示

PANEL.remove(gridx.5,gridy.5)
--<这可能吗


或者我怎样才能用这种逻辑来删除。

不,没有这样的方法,你需要自己编写

  • 容器
    类有一个方法
    getLayout()
    。这将允许您获取面板的
    GridBagLayout
    实例
  • Container
    类还有一个方法
    getComponents()
  • 因此,一旦获得数组中的所有组件,就可以遍历该数组。对于每个组件,您将:

  • 使用
    GridBagLayout
    getConstraints()
    方法
  • 然后检查
    gridbagstraints
    对象的
    gridx
    gridy
    值,查看组件所在的束/行
  • 如果零部件符合您的条件,请将其从面板中删除
  • 循环完成后,在面板上调用
    revalidate()

    编辑:

    在代码的某个地方,您需要将布局管理器设置为GridBagLayout。然后使用GridBagConstraints将组件添加到面板中

    以后,如果要从配电盘中删除零部件,则需要参考:

  • 将组件添加到的JPanel
  • 上述面板的布局
  • 我给了你实现这一目标所需的方法。那么,您是否阅读了API中我建议您需要使用的方法

    基本准则是:

    GridBagLayout layout = (GridBagLayout)panel;
    Component[] components = panel.getComponent();
    
    for (each component in the array)
    {
        GridBagConstraint gbc = layout.getConstraints( component )
    
        if (gbc.gridX == ?? && gbc.gridY = ??)
        {
            // remove the component from the panel
        }
    }
    
    panel.revalidate();
    

    因此,我建议您创建一个方法,在要查找的组件的行和列中传递。然后可以更改if条件以访问这些参数。

    createInPanel.getLayout();List components=new ArrayList();addAll(createInPanel.getComponents());其中createInPanel是作为gridbaglayout的面板。我认为我没有正确理解这一点。1)请参见2)使用a,如中所示。3) 为了更快地获得更好的帮助,请添加或。