将字符串数组设置为 jtable 列名,将 Apache poi excel

 jTable1.setModel(new javax.swing.table.DefaultTableModel(

    new Object [][] {

        {null, null, null},

        {null, null, null},

          },

    new String [] {

        class2.columnName[0],class2.columnName[1],class2.columnName[2]                    

    }

));

列名数组在 class2 中:


static String[] columnName={"Name", "data" , "data2"};

我想从 String[]String[] Columns 在 JTableJTable 中设置 3 列名称。我通过使用硬编码的数组索引号来做到这一点:但是如果我在数组中有数百个值,那么我如何通过使用数组值而不使用硬编码的数组索引号而是使用任何其他较少键入的方式来设置 jtable 列名


忽然笑
浏览 128回答 2
2回答

千万里不及你

如果数组从未以任何方式修改并且您想使用整个数组,那么您可以直接使用数组引用:jTable1.setModel(new javax.swing.table.DefaultTableModel(&nbsp; &nbsp; new Object [][] {&nbsp; &nbsp; &nbsp; &nbsp; {Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue},&nbsp; &nbsp; &nbsp; &nbsp; {Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue},&nbsp; &nbsp; },&nbsp; &nbsp; Writesheet.Columns // <-- Array reference));如果可以修改数组,则可以创建整个数组的副本。有很多方法可以做到,我个人的偏好是Arrays.copyOf:&nbsp; &nbsp; Arrays.copyOf(Writesheet.Columns, Writesheet.Columns.length) // <-- Copy of the entire array如果您只需要数组的连续部分,则可以创建数组切片的副本:&nbsp; &nbsp; Arrays.copyOfRange(Writesheet.Columns, 0, 3) // <-- Copy of a part of the array, indexes from 0 to 2最后,如果您需要通过单独的非连续索引提取元素并且不想Writesheet.Columns[...]多次键入,您可以使用索引流并使用Stream.map()以下方法提取值:&nbsp; &nbsp; IntStream.of(0, 1, 2) // <-- Indexes here&nbsp; &nbsp; &nbsp; &nbsp; .mapToObj(i -> Writesheet.Columns[i]).toArray()更新:使用,作为分隔符将结果数组连接到字符串:&nbsp; &nbsp; IntStream.of(0, 1, 2) // <-- Indexes here&nbsp; &nbsp; &nbsp; &nbsp; .mapToObj(i -> Writesheet.Columns[i]).collect(Collectors.joining(","))

暮色呼如

new String[]{Writesheet.Columns[0], Writesheet.Columns[1], Writesheet.Columns[2]}可以替换为对数组的引用Writesheet.Columns尽管{Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue}可以替换为Stream.generate(() -> Readsheet.Stringvalue).limit(3).toArray(String[]::new)可以推广到一个方法public static <T> T[] generateArrayFromElement(T element, int size, IntFunction<T[]> arrayGeneratorFunction) {&nbsp; &nbsp; return Stream.generate(() -> element)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.limit(size)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.toArray(arrayGeneratorFunction);}...generateArrayFromElement(Readsheet.Stringvalue, 3, String[]::new);(我们生成单个元素的无限流,限制为所需大小,并收集到数组中)或者public static <T> T[] generateArrayFromElement2(T element, T[] array) {&nbsp; &nbsp; Arrays.fill(array, element);&nbsp; &nbsp; return array;}...generateArrayFromElement2(Readsheet.Stringvalue, new String[3]);(我们用一个元素填充给定的数组并返回它)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java