我的 JFrame 中有一个包含“页面”数组列表的大型 JPanel - 扩展 JPanel 的数据类型,它默认包含 JPanel“区域”,高度等于它的子项的累积之一(默认情况下它没有),和 BOX.filler(首选高度是“页面”的全高)。因此,默认情况下,整个“页面”都填充有填充物,随着我向“区域”添加元素,填充物会减少。
此外,我还有一个包含 JPanel 的数组列表。它们是进入“区域”的元素。当我添加它们时,当填充物的高度变为零时,我创建了一个新的“页面”并将最后一个元素(“越界”)移到它上面。基本上,它的工作方式应该类似于 MS Word。
现在开始。用户可以从文档的任何部分自由添加和删除这些元素。问题是,如何将元素添加到“区域”上的随机点?添加可能会通过调用附加到另一个元素的 keylistener 来进行,因此我将知道在哪两个元素之间放置随机元素。
是否有布局管理器可用于此目的,还是应该以其他方式完成? 走哪条路?
最佳答案
如果我对你的问题理解正确,你是想在某个位置插入一个组件而不是附加它?
如果这是您的问题,您可能需要使用 BoxLayout 和 java 的 swing 容器的 add(component, index) 方法。当然,您可能再次需要将一些子元素移动到下一页,并将下一页的子元素递归到下一页。
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class AddAt {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JLabel one = new JLabel("one");
JLabel two = new JLabel("two");
JLabel between = new JLabel("between");
frame.add(panel);
panel.add(one);
panel.add(two);
panel.add(between, 1);
frame.pack();
frame.setVisible(true);
}
}
结果:
关于java - 可视化数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12131751/