为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2021-10-06 13:02:09
 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 列名
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

如果数组从未以任何方式修改并且您想使用整个数组,那么您可以直接使用数组引用:


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

    new Object [][] {

        {Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue},

        {Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue},


    },

    Writesheet.Columns // <-- Array reference

));

如果可以修改数组,则可以创建整个数组的副本。有很多方法可以做到,我个人的偏好是Arrays.copyOf:


    Arrays.copyOf(Writesheet.Columns, Writesheet.Columns.length) // <-- Copy of the entire array

如果您只需要数组的连续部分,则可以创建数组切片的副本:


    Arrays.copyOfRange(Writesheet.Columns, 0, 3) // <-- Copy of a part of the array, indexes from 0 to 2

最后,如果您需要通过单独的非连续索引提取元素并且不想Writesheet.Columns[...]多次键入,您可以使用索引流并使用Stream.map()以下方法提取值:


    IntStream.of(0, 1, 2) // <-- Indexes here

        .mapToObj(i -> Writesheet.Columns[i]).toArray()

更新:使用,作为分隔符将结果数组连接到字符串:


    IntStream.of(0, 1, 2) // <-- Indexes here

        .mapToObj(i -> Writesheet.Columns[i]).collect(Collectors.joining(","))


查看完整回答
反对 回复 2021-10-06
?
暮色呼如

TA贡献1853条经验 获得超9个赞

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) {

    return Stream.generate(() -> element)

                 .limit(size)

                 .toArray(arrayGeneratorFunction);

}

...

generateArrayFromElement(Readsheet.Stringvalue, 3, String[]::new);

(我们生成单个元素的无限流,限制为所需大小,并收集到数组中)


或者


public static <T> T[] generateArrayFromElement2(T element, T[] array) {

    Arrays.fill(array, element);

    return array;

}

...

generateArrayFromElement2(Readsheet.Stringvalue, new String[3]);

(我们用一个元素填充给定的数组并返回它)


查看完整回答
反对 回复 2021-10-06
  • 2 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信