Java 如何删除GridBagLayout的行

Java 如何删除GridBagLayout的行,java,swing,user-interface,Java,Swing,User Interface,我有向GridBagLayout添加行的代码,但我不知道如何删除一行。我想在单击某个按钮时去掉布局的最后一行 这是添加它们的代码: public static JPanel createLayout(int rows) { JPanel product = new JPanel(new GridBagLayout()); String[] lables = {"School ", "Advanced #", "Novice # "}; double weight

我有向GridBagLayout添加行的代码,但我不知道如何删除一行。我想在单击某个按钮时去掉布局的最后一行

这是添加它们的代码:

public static JPanel createLayout(int rows) {
    JPanel product = new JPanel(new GridBagLayout());
    String[] lables = {"School    ", "Advanced #", "Novice #   "};
    double weight = .3333333333333;

    GridBagConstraints c = new GridBagConstraints();
    c.insets = new Insets(3, 3, 3, 3);
    c.weightx = weight;
    c.fill = GridBagConstraints.HORIZONTAL;
    c.anchor = GridBagConstraints.CENTER;
    c.gridy = 1;
    for (int j = 0; j < lables.length; j++) {
        c.gridx = j;
        JLabel l = new JLabel(lables[j]);
        product.add(l, c);
    }

    for (int i = 0; i < rows; i++) {
        c.gridy++;
        for (int j = 0; j < lables.length; j++) {
            c.gridx = j;
            JTextField f = new JTextField();
            product.add(f, c);
        }
    }
    c.gridy++;
    c.gridx = 0;
    c.anchor = GridBagConstraints.NORTHWEST;
    c.fill = GridBagConstraints.NONE;

    JPanel b = new JPanel();
    JButton add = new JButton("+");
    b.add(add);
    JButton delete = new JButton("-");
    b.add(delete);
    product.add(b, c);
    return product;
}
public static void main(String[] args) throws IOException {
    JFrame frame = new JFrame("Debate Calculator");
    JPanel debates = new JPanel();
    frame.add(createLayout(5), BorderLayout.NORTH);
    frame.pack();
    frame.setVisible(true);
}
publicstaticjpanelcreatelayout(int行){
JPanel产品=新的JPanel(新的GridBagLayout());
String[]标签={“学校”、“高级”、“新手”};
双倍重量=.3333;
GridBagConstraints c=新的GridBagConstraints();
c、 插图=新插图(3,3,3,3);
c、 重量x=重量;
c、 填充=GridBagConstraints.HORIZONTAL;
c、 锚点=GridBagConstraints.CENTER;
c、 gridy=1;
对于(int j=0;j

那么我如何删除一行呢?

如果你坚持自己全部删除,那么你需要维护某种模型,以便知道所有内容的位置

首先,将每一行组件添加到某种类型的
列表中。删除一行时,只需找到组成该行的所有组件并将其从容器中删除即可

这给你带来了一个问题。因为最后一行的
y
位置可能与行数匹配的时间更长。(即,您不能简单地通过
c.gridy=listOfComponents.size()
来确定下一行的添加位置)

GridBagConstraints
允许您获取用于布局给定组件的约束。这意味着您可以在
列表中找到最后一行
,获取第一列的约束条件,并可以推断出最后一个
y
位置……有关更多信息,请查看


或者你可以只使用a

使用a,这是它为Hanks设计的,用于在JTable无法满足复杂需求的情况下提供更复杂的答案!