Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可视化数组列表_Java_Swing_Arraylist_Jpanel_Layout Manager - Fatal编程技术网

Java 可视化数组列表

Java 可视化数组列表,java,swing,arraylist,jpanel,layout-manager,Java,Swing,Arraylist,Jpanel,Layout Manager,我的JFrame中有一个lage JPanel,它包含页面的arraylist-扩展JPanel的数据类型,默认包含JPanel区域,高度等于它的子元素的累积高度,默认情况下没有,BOX.filler Prefered height是页面的全高。所以,默认情况下,整个页面都填充了填充物,随着我向区域中添加元素,填充物会减少 此外,我还有一个数组列表,其中包含JPanel。它们是进入区域的元素。当我添加它们时,当填充高度为零时,我创建一个新页面,并将最后一个超出边界的元素移动到该页面上。基本上,它

我的JFrame中有一个lage JPanel,它包含页面的arraylist-扩展JPanel的数据类型,默认包含JPanel区域,高度等于它的子元素的累积高度,默认情况下没有,BOX.filler Prefered height是页面的全高。所以,默认情况下,整个页面都填充了填充物,随着我向区域中添加元素,填充物会减少

此外,我还有一个数组列表,其中包含JPanel。它们是进入区域的元素。当我添加它们时,当填充高度为零时,我创建一个新页面,并将最后一个超出边界的元素移动到该页面上。基本上,它的工作原理应该与Word类似

现在轮到你了。用户可以从文档的任何部分自由添加和删除这些元素。问题是,如何将元素添加到区域上的随机点?添加可能是通过调用附加到另一个元素的keylistener来实现的,因此我将知道在哪两个元素之间放置的是随机元素

是否有一个布局管理器可用于此目的,还是应该以另一种方式进行?
哪种方式?

如果我正确理解您的问题,您是在尝试在某个位置插入组件,而不是附加它

如果这是您的问题,您可能希望使用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);
    }
}
结果: