当前位置: 首页 > 知识库问答 >
问题:

具有可变列长度的JTable

杨高翰
2023-03-14

我试图读取一个csv文件,并将其设置为转换为另一种格式,以节省一些工作时间,但当一行的长度小于预期列时,我正在加载它的JTable会引发异常。如果行长度<列长度,是否有方法创建空单元格?

   private class CSVTableModel extends AbstractTableModel{

   private ArrayList<String[]> list;
   private String[] columns;

   public CSVTableModel() {
       this.list = p.getData();
       this.columns = p.getHeaders();
   }

   @Override
   public String getColumnName(int col)   {
       return columns[col];
   }

   @Override
   public int getRowCount() {
       return list.size();
   }

   @Override
   public int getColumnCount() {
       return columns.length;
   }

   @Override
   public Object getValueAt(int row, int col) {
       return list.get(row)[col];
   }

   @Override
   public void setValueAt(Object value, int row, int col)  {
       list.get(row)[col] = (String) value;
       this.fireTableCellUpdated(row, col);
   }
   }

因此,您可以看到getValueAt(int row,int col)方法,如果col超过String[].length将导致错误。

共有1个答案

荆煌
2023-03-14

我发帖后就解决了。大黄鸭调试。

@Override
   public Object getValueAt(int row, int col) {
       if ( col < list.get(row).length )   {
            return list.get(row)[col];
       }    else    {
           return "";
       }
   }

添加了一个条件,现在工作正常。早该看到了。

 类似资料:
  • 问题内容: 我试图从表中获取所有列的列表,这些列表包含它们的数据类型,数据长度和该列中最长值的长度。 我使用此SQL来获取列及其数据类型和长度: 我有此SQL,用于获取值的最大长度: 但是我不知道如何将它们结合起来。我正在使用SQL Server 2008。 问题答案: 感谢您的建议。我想出了以下解决方案。它为我获取了我需要的数据,但是希望了解它是否可以提高效率。

  • 问题内容: 我试图使用RNN(特别是LSTM)进行序列预测。但是,我遇到了序列长度可变的问题。例如, 我正在尝试使用一个基于此基准的简单RNN预测当前单词之后的下一个单词,以构建PTB LSTM模型 。 但是,该参数(用于展开到先前的隐藏状态)在每个Tensorflow的时期应保持相同。基本上,批处理句子是不可能的,因为句子的长度会有所不同。 在这里,对于我来说,每个句子都需要更改。我已经尝试了几

  • 问题内容: 我有一个带有列的表,其中包含如下所示的字符串。 我需要从第二次出现到字符串结尾获取子字符串,并且您可以看到子字符串的长度不是固定的。第一部分并不总是固定的,它可以改变。到目前为止,我正在使用以下代码来实现它。 如您所见,我采用一个任意大的值作为长度来处理可变长度。有更好的方法吗? 问题答案: 您可以与函数结合使用,找到的最后一次出现,还可以使用从字符串末尾获取指定数量的字符。 SQLF

  • 我有一个需求,我需要将包含可变长度记录的文件转换为固定长度记录。这是一个来自大型机的文件。 因为我不能访问大型机上的文件,所以我需要一个示例可变长度记录文件和一种转换为固定长度记录的方法。 我对这种文件是完全陌生的。但是如果我知道如何将这些可变长度的记录映射到固定长度的记录,我可以用Java编码。 这就是我的字段的位置: 所以我期待这样的输出:

  • 问题内容: 我有一个清单清单。每个子列表的长度在1到100之间。每个子列表在一组数据中的不同时间包含一个粒子ID。我想在给定的时间形成所有粒子ID的列表。为此,我可以使用以下方法: list2将包含list中每个子列表的首个元素。我不仅要对第一个元素执行此操作,还要对1到100之间的每个元素执行此操作。我的问题是,每个子列表都不存在元素号100(或66或77或其他)。 有什么方法可以创建列表列表,

  • 我知道很多文章描述了如何使listView项的展开/折叠动画化,但我就是无法使其工作:-( 我有一个listView,其中每个项目都包含一个隐藏的LinearLayout元素ll(view.gone),我希望使用动画展开/折叠ll。我的问题是--显然--LL的高度可变。ll的高度设置为wrap_content,因为它包含一个描述和一些图像。 我所看到的挑战是,我一开始就把LL的生存能力设定为.消失