Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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_Jtable - Fatal编程技术网

Java 动态地将字符串添加到对象[]

Java 动态地将字符串添加到对象[],java,swing,jtable,Java,Swing,Jtable,我正在做一个项目,涉及一个具有动态列数的JTable。每个列基本上都是一个单独的事务,但我不知道一个文件将提前处理多少事务 通常,当我创建一个JTable时,我知道我将拥有多少列,并且我这样声明它: String header[] = new String[]{ "Tag","Transaction1" }; 但是,对于这个项目,每次使用该程序时都可以有任意数量的事务,因此在创建行之前,我需要根据某个数组的长度动态添加列。(第一行实际上也将用

我正在做一个项目,涉及一个具有动态列数的JTable。每个列基本上都是一个单独的事务,但我不知道一个文件将提前处理多少事务

通常,当我创建一个JTable时,我知道我将拥有多少列,并且我这样声明它:

String header[] = new String[]{

                "Tag","Transaction1"

        };
但是,对于这个项目,每次使用该程序时都可以有任意数量的事务,因此在创建行之前,我需要根据某个数组的长度动态添加列。(第一行实际上也将用作标题)

所以我有一个给定长度的数组,但我不知道如何在循环中使用这个值,至少不知道如何创建一个像上面代码所示的对象

例如,假设用户上载了一个包含3个事务的文件。。我需要字符串头[]读取:

String header[] = new String[]{

                "Tag","Transaction1","Transaction2","Transaction3"

        };

我考虑过可能创建一个数组列表,并使用计数器和循环将事务添加到此列表中,然后可能将值提取到String[]头中,尽管我不确定这是否是最好的方法,甚至不确定如何准确地使其工作

我认为你不需要使用数组,最好使用列表,这是因为你可以根据需要增加大小,迭代它,将它解析为字符串数组等等

实例
List transactions=new ArrayList();
交易。添加(“标记”);
//后来
交易。添加(“交易1”);
交易。添加(“交易2”);
//打印出来
for(最终字符串:事务){
System.out.println(字符串);
}

我认为你不需要使用数组,最好使用列表,因为你可以根据需要增加大小、迭代、解析为字符串数组等等

实例
List transactions=new ArrayList();
交易。添加(“标记”);
//后来
交易。添加(“交易1”);
交易。添加(“交易2”);
//打印出来
for(最终字符串:事务){
System.out.println(字符串);
}

我真的找到了答案。。显然,我需要废弃整个阵列并像这样添加它们

DefaultTableModel tableModel = new DefaultTableModel();

for(String columnName : columnNames){
   tableModel.addColumn(columnName);
}

jTable.setModel(tableModel);

我真的找到了答案。。显然,我需要废弃整个阵列并像这样添加它们

DefaultTableModel tableModel = new DefaultTableModel();

for(String columnName : columnNames){
   tableModel.addColumn(columnName);
}

jTable.setModel(tableModel);

一个很好的选择是使用
ArrayList
动态添加或从列表中删除元素

然后,在必要时,可以将该
ArrayList
转换为字符串数组,如

ArrayList<String> elements = new ArrayList<String>();
elements.add("Transaction 1");
elements.add("Transaction 2");
elements.add("Transaction 3");

Object[] elementArray = elements.toArray();
ArrayList元素=新的ArrayList();
要素。添加(“交易1”);
要素。添加(“交易2”);
要素。添加(“交易3”);
Object[]elementArray=elements.toArray();

一个很好的选择是使用
ArrayList
动态添加或删除列表中的元素

然后,在必要时,可以将该
ArrayList
转换为字符串数组,如

ArrayList<String> elements = new ArrayList<String>();
elements.add("Transaction 1");
elements.add("Transaction 2");
elements.add("Transaction 3");

Object[] elementArray = elements.toArray();
ArrayList元素=新的ArrayList();
要素。添加(“交易1”);
要素。添加(“交易2”);
要素。添加(“交易3”);
Object[]elementArray=elements.toArray();
列表标题列表=新建ArrayList();
标题列表。添加(“标签”);
对于(int i=1;i
List headerList=new ArrayList();
标题列表。添加(“标签”);

对于(inti=1;i我相信您要查找的是一个,而不是数组或列表,因为这允许动态分配

语法是:

List<String> header = new ArrayList<String>();
header.add("Tag");

我相信您需要的是一个,而不是一个数组或列表,因为这允许动态分配

语法是:

List<String> header = new ArrayList<String>();
header.add("Tag");

这甚至还没有开始回答我的问题。这只是关于将ArrayList转换为Array,这不是我要问的。我要问的是如何动态添加列或动态填充header对象。在获得新数据时替换数组或使用列表。无论哪种方式,最好提供自己的表模型实现如果您在创建数组之前知道数据,那么只需像
stringheader[]=newstring[numTransactions+1]那样创建它即可
然后使用循环并根据需要填充元素。您可以动态地将项目添加到ArrayList中,并将其转换为与该帖子的答案中所述大小相同的数组。或者您也可以单独使用ArrayList。这甚至还不能回答我的问题。这只是将ArrayList转换为Array,这不是我想要的我在问..我在问如何动态添加列或动态填充标头对象。在获得新数据时替换数组或使用列表。无论哪种方式,最好提供自己的表模型实现。如果在创建数组之前知道数据,则只需像
String header[]=new String那样创建它[numTransactions+1]
然后使用循环并根据需要填充元素。您可以动态地将项目添加到ArrayList中,并将其转换为与该帖子的答案中所述大小相同的数组。或者您也可以自己使用ArrayList。我尝试了您的解决方案,但被迫将强制转换为向量添加到ArrayList中。不确定是否可行,但我将测试您的回答并标记为正确,因为它能工作,并且比我的解决方案更有效。我尝试了你的解决方案,我被迫将强制转换添加到它作为向量。不确定它是否能工作,但我将测试你的答案,并标记为正确,因为它能工作,并且比我的解决方案更有效。啊,这太完美了!我解析的数据已经被保存我可以直接转换成一个对象,然后填充表格。这太完美了!谢谢你,比现在的程序效率更高!我实际上没有调用列“Transaction1”为了简单起见,我在这里使用了与数组列表中相同的值,这样就可以了。啊,这太完美了!我解析的数据已经存储在数组列表中了,所以我没有
 String[] headerArray = header.toArray(new String[header.size()]);