Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 循环给出错误并将错误值从ArrayList添加到JTree_Java_Loops_If Statement_Arraylist_Jtree - Fatal编程技术网

Java 循环给出错误并将错误值从ArrayList添加到JTree

Java 循环给出错误并将错误值从ArrayList添加到JTree,java,loops,if-statement,arraylist,jtree,Java,Loops,If Statement,Arraylist,Jtree,修正了以前的帖子 除了if语句外,一切似乎都运行良好,它有时会将错误的数字添加到错误的位置,并给出一个错误 目的是向Jtree添加两个ArrayList。Arraylist包含整数,如(1,2,3,4等),第二个Arraylist包含双数,如(1.1,1.2,2.1等) 我想将第一个数组添加到JTree中,我已经设法做到了这一点。但是我想添加第二个arraylist,这样它就是第一个arraylist的子元素 所以1.1和1.2是1的孩子,2.1是2的孩子等等 任何帮助都将不胜感激 代码是可运行

修正了以前的帖子

除了if语句外,一切似乎都运行良好,它有时会将错误的数字添加到错误的位置,并给出一个错误

目的是向Jtree添加两个ArrayList。Arraylist包含整数,如(1,2,3,4等),第二个Arraylist包含双数,如(1.1,1.2,2.1等)

我想将第一个数组添加到JTree中,我已经设法做到了这一点。但是我想添加第二个arraylist,这样它就是第一个arraylist的子元素

所以1.1和1.2是1的孩子,2.1是2的孩子等等

任何帮助都将不胜感激

代码是可运行的

import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;
import java.util.ArrayList;
import java.util.Enumeration;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.SwingUtilities;

public class TreeExample2 extends JFrame
{
    private JTree tree;

public TreeExample2()
{
    final ArrayList<String> arrayList = new ArrayList<String>();
    final ArrayList<String> arrayList2 = new ArrayList<String>();
    JPanel frameG1= new JPanel();
    arrayList.add("1");
    arrayList.add("2");
    arrayList.add("3");
    arrayList.add("4");

    arrayList2.add("1.1");
    arrayList2.add("1.2");
    arrayList2.add("2.1");
    arrayList2.add("4.1");

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("JTree Example");
    this.pack();
    frameG1.setVisible(true);

    frameG1.setSize(500,500);


    frameG1.setLayout(null);


            JFrame frameG2 = new JFrame("Cell Tree");
            frameG2.setSize( 400, 900 );
            frameG2.setVisible(true);

            frameG2.setBackground( Color.gray );

            DefaultMutableTreeNode root = new DefaultMutableTreeNode("cells");
            tree = new JTree(root);
            frameG2.add(tree);
            int i=0;
            //should through first array list and adds it to root
            for (int n =0; n<arrayList.size();) {
                DefaultMutableTreeNode cells = new DefaultMutableTreeNode(arrayList.get(n));

                root.add(cells);

                //should go through jtree elements
                Enumeration search = root.postorderEnumeration();
                while(search.hasMoreElements()){

                    //should compare each element to a 2nd array
                    //2nd array consists of double numbers like 1.1,1.2,2.1 etc
                    //so i split it before the "." so 1.1 is 1
                    //first array consists of whole numbers like 1, 2, 3
                    //want to make 1.1 child of 1 etc.

                    if (search.nextElement().toString().equals(arrayList2.get(i).toString().split("\\.", 2)[0])) {
                        DefaultMutableTreeNode NewCells = new DefaultMutableTreeNode(arrayList2.get(i));
                        cells.add(NewCells);

                        i++;

                    }

                }
                n++;
            }

}


public static void main(String[] args)
{
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new TreeExample2();
        }
    });
}
import javax.swing.*;
导入javax.swing.tree.DefaultMutableTreeNode;
导入java.awt.*;
导入java.util.ArrayList;
导入java.util.Enumeration;
导入javax.swing.JFrame;
导入javax.swing.JTree;
导入javax.swing.SwingUtilities;
公共类树示例2扩展了JFrame
{
私有JTree树;
公共树示例2()
{
最终ArrayList ArrayList=新ArrayList();
最终ArrayList ArrayList 2=新ArrayList();
JPanel frameG1=新的JPanel();
arrayList.添加(“1”);
arrayList.添加(“2”);
arrayList.添加(“3”);
arrayList.添加(“4”);
arrayList2.添加(“1.1”);
arrayList2.添加(“1.2”);
arrayList2.添加(“2.1”);
arrayList2.添加(“4.1”);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
此.setTitle(“JTree示例”);
这个包();
frameG1.setVisible(true);
frameG1.设置大小(500500);
frameG1.setLayout(空);
JFrame frameG2=新JFrame(“单元树”);
frameG2.setSize(400900);
frameG2.setVisible(true);
框架2.背景(颜色为灰色);
DefaultMutableTreeNode根=新的DefaultMutableTreeNode(“单元格”);
树=新的JTree(根);
frameG2.add(树);
int i=0;
//应遍历第一个数组列表并将其添加到根

对于(int n=0;n在某些点上,变量
i
的值等于
4
,而
arrayList2.size()
也等于
4
。这会导致
索引自动边界异常

添加以下条件似乎可以解决问题

while(search.hasMoreElements() && (i<arrayList2.size())){

while(search.hasMoreElements()&&(iThanks!)似乎已修复错误。它似乎仍在将一些ArrayList 2添加到错误的位置。例如,1.1将成为1的子级,但1.2将成为2的子级。知道吗?
for (int n =0; n<arrayList.size();n++) 
for (int n =0; n<arrayList.size();) {
....
n++;