Java 循环给出错误并将错误值从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的孩子等等 任何帮助都将不胜感激 代码是可运行的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的孩子等等 任何帮助都将不胜感激 代码是可运行
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++;