Java 错误 : javax. swing.JTable$1 无法转换为 javax.swing.table.DefaultTableModel

标签 java jtable

我正在尝试做的是在 JPanelJFrame 的新实例中创建一个 JTable 并且我得到了在表中添加行时出错:

Object[] column = {"id", "title"};
Object[][] data = {};
JTable toDoTable = new JTable(data, column) {
  public Component prepareRenderer(TableCellRenderer renderer, int rowIndex,
      int columnIndex) {
       if(columnIndex == 1) {
          setFont(new Font("Arial", Font.BOLD, 12));
       } else {
           setFont(new Font("Arial", Font.ITALIC, 12));
       }

         return super.prepareRenderer(renderer, rowIndex, columnIndex);
  }
};


JScrollPane jpane = new JScrollPane(toDoTable);
JPanel panel = new JPanel();
JFrame frame = new JFrame();
frame.setSize(new Dimension(1100, 408));
frame.setTitle("JTable Font Setting Example");
panel.add(jpane);
frame.add(new JScrollPane(panel));
frame.setVisible(true);

// Add rows in the Table
DefaultTableModel model = (DefaultTableModel)toDoTable.getModel();
ConnectMSSQLServer connServer = new ConnectMSSQLServer();
ResultSet rs = connServer.dbConnect();
  try
   {
      while (rs.next()) {
          String id = rs.getString("id");
          String title = rs.getString("title");
          model.addRow(new Object[]{id, title});
      }
    }
    catch(Exception e)
    {

    }

在表中添加行时出现错误

最佳答案

这里的问题是您正在调用 JTable(Object[][], Object[])构造函数。如果您查看该链接中的源代码,您可以看到它在内部调用 JTable(TableModel) 构造函数,构造了一个 AbstractTableModel 的匿名实例,它是getModel() 方法返回的内容 - 这不能转换为 DefaultTableModel

但是:您在这里尝试执行的操作无论如何都行不通。你是说数据的行由一个零元素数组表示:

Object[][] data = {};

您将无法向其中添加行,因为您无法在构造数组后调整其大小。

除此之外,您应该构造一个显式的 DefaultTableModel:

TableModel tableModel = new DefaultTableModel(column, rowCount);

然后使用它来构建JTable:

JTable toDoTable = new JTable(tableModel) { ... }

我对 swing 一点都不熟悉,但看起来 DefaultTableModel 是由行数据的 Vector 支持的,所以你不需要知道rowCount 的精确值。

关于Java 错误 : javax. swing.JTable$1 无法转换为 javax.swing.table.DefaultTableModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34174107/

相关文章:

Java - 如何检查 JOptionPane.showInputDialog 中确切输入的内容

java - 在 primefaces 中显示嵌套 bean,JSF web 应用程序

Java TableModel 没有更新?

java - 将组合框转换为字符串

java - 用于 Java 或 Python 的面部跟踪库

java - 如何在 Java 中解析 JSON 结构化 JSON 数组对象

java - 如何让 Jenkins 工作在 java 异常的情况下失败?

Java JTable 多单元格选择

java - Java 中的拖放 - 绘制的不仅仅是边框

java - JTable增量单元格填充