Java 可视化数组列表
我的JFrame中有一个lage JPanel,它包含页面的arraylist-扩展JPanel的数据类型,默认包含JPanel区域,高度等于它的子元素的累积高度,默认情况下没有,BOX.filler Prefered height是页面的全高。所以,默认情况下,整个页面都填充了填充物,随着我向区域中添加元素,填充物会减少 此外,我还有一个数组列表,其中包含JPanel。它们是进入区域的元素。当我添加它们时,当填充高度为零时,我创建一个新页面,并将最后一个超出边界的元素移动到该页面上。基本上,它的工作原理应该与Word类似 现在轮到你了。用户可以从文档的任何部分自由添加和删除这些元素。问题是,如何将元素添加到区域上的随机点?添加可能是通过调用附加到另一个元素的keylistener来实现的,因此我将知道在哪两个元素之间放置的是随机元素 是否有一个布局管理器可用于此目的,还是应该以另一种方式进行?Java 可视化数组列表,java,swing,arraylist,jpanel,layout-manager,Java,Swing,Arraylist,Jpanel,Layout Manager,我的JFrame中有一个lage JPanel,它包含页面的arraylist-扩展JPanel的数据类型,默认包含JPanel区域,高度等于它的子元素的累积高度,默认情况下没有,BOX.filler Prefered height是页面的全高。所以,默认情况下,整个页面都填充了填充物,随着我向区域中添加元素,填充物会减少 此外,我还有一个数组列表,其中包含JPanel。它们是进入区域的元素。当我添加它们时,当填充高度为零时,我创建一个新页面,并将最后一个超出边界的元素移动到该页面上。基本上,它
哪种方式?如果我正确理解您的问题,您是在尝试在某个位置插入组件,而不是附加它 如果这是您的问题,您可能希望使用BoxLayout和java的swing容器的addcomponent、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);
}
}
结果:
如果我正确理解您的问题,您是否试图在某个位置插入组件,而不是附加组件 如果这是您的问题,您可能希望使用BoxLayout和java的swing容器的addcomponent、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);
}
}
结果: