gpt4 book ai didi

java - 当从容器中删除任何组件时,如何重用容器中的区域?

转载 作者:行者123 更新时间:2023-12-01 19:23:44 25 4
gpt4 key购买 nike

我有一个面板,我正在尝试从中删除在运行时添加到其中的标签。但是当标签被成功删除时,我无法使用该标签留下的空间再次向其添加任何标签。

感谢您对解决方案的期待。

这是相关的代码片段:

  1. 向面板添加标签:

    JLabel jl = new JLabel();
    jl.setOpaque(true);
    jl.setIcon(new ImageIcon("D:/Project/router2.jpg"));
    jl.setBounds(x, y, jl.getPreferredSize().width,
    jl.getPreferredSize().height);
    for (Component c : lcomponent) {
    flag = true;
    Rectangle r4 = c.getBounds();
    int x1 = (int) r4.getX();
    int y1 = (int) r4.getY();
    Rectangle r5 = new Rectangle(
    new Point(x1 - 60, y1 - 60), new Dimension(170, 170));
    if (r5.contains(p)) { //To ensure that two labels do not overlap
    flag = false; //or are too close to each other
    break;
    }
    }
    if (flag) {
    p2.add(jl); //p2 is a panel
    Component c2 = p2.getComponentAt(x, y);
    p2.repaint();
    lcomponent.add(c2); //lcomponent is an ArrayList<Component> to
    //store all the labels added to the panel
    }
  2. 删除标签:

    p2.remove(<label name>);
    p2.repaint();

我也尝试过 revalidate() 但我不知道为什么它会自动对齐组件顶部一行。

也帮我解决这个问题

最佳答案

调用Container.invalidate()

关于java - 当从容器中删除任何组件时,如何重用容器中的区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com