java 。 Swing 。更改容器中组件的顺序

标签 java swing containers

我正在使用 Java Swing。我创建了 JPanel 并用组件填充它。

JPanel panel = new JPanel();
for (JComponent c : components) {
   panel.add(c);
}

我需要更改某些组件的顺序。可以肯定的是,我需要交换两个具有定义索引(oldIndex 和 newIndex)的组件。 我知道,我可以通过 panel.getComponents() 获取所有组件。

我发现只有一种方法可以做到这一点。

Component[] components = panel.getComponents();
panel.removeAll();
components[oldIndex] = targetComponent;
components[newIndex] = transferComponent;
for (Component comp : components) {
    panel.add(comp);
}                
panel.validate();

但在我看来,正在重新创建组件,因为它们丢失了在进行此类操作之前拥有的一些处理程序(监听器)。 您能建议另一种方法来重新排列容器中的组件吗?

最佳答案

您问题中的问题是我们不知道 targetComponenttransferComponent 是谁,您可能创建了新组件。你可以试试这个:

Component[] components = panel.getComponents();
panel.removeAll();
Component temp = components[oldIndex];
components[oldIndex] = components[newIndex];
components[newIndex] = temp;
for (Component comp : components) {
    panel.add(comp);
}                
panel.validate();

关于 java 。 Swing 。更改容器中组件的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209751/

相关文章:

java - 在目录中的多个文件上运行java程序,输出具有唯一的名称

java - 用 Java 中的循环替换代码中的语句

java - 在 java Jtable 上显示 postgresql 日期

java - 如何让 JPanel 的宽度和高度相等

delphi - Delphi 中的通用容器

java - Spring Hibernate 生成动态查询

java - 如何在 Swing 中单击时放置图像?

Docker swarm加入linux容器错误-远程CA与指纹不匹配

c++ - 如何获得两个(伪)随机但彼此不同的容器迭代器/元素?

java - isReachable 方法