java - JTable 作为 MVC 框架的一部分

标签 java sql swing user-interface jtable

到处做了一些研究后,我在解决某个特定问题时感到羞愧。我对 JTable 不太熟悉,想知道是否可以获得一些建议。

我正在使用模型- View - Controller 概念,但遇到以下问题。

这是 MODEL 类中的一段没有错误的代码:

    public TableModel getTableData() throws SQLException {
    try {
        String sql = "SELECT date as 'Date',eventName as 'Name', time as 'Start Time' FROM Event";
        pst = conn.prepareStatement(sql); 
        rs = pst.executeQuery();
        TableModel model = (DbUtils.resultSetToTableModel(rs));
        return model;
        }
   finally {
        try {rs.close(); pst.close(); conn.close(); }
        catch(SQLException e){} 
    }

}

这是 VIEW 类的片段:

 public EventView() {
    initComponents();
    this.model = new EventModel();
    tableEvent.setModel(model.getTableData());

}

我的错误在于 VIEW 类的 tableEvent.setModel(model.getTableData()); 部分,其中表示必须捕获或抛出 SQL 异常。据我了解,在接口(interface)(VIEW CLASS)中处理数据库并不是一个好的做法。应由 MODEL 处理。

我这里有两个选择:

  1. 将 throws 子句添加到 EventView() 构造函数本身
  2. try-catch 包围语句。

但我相信这会将数据库导入和概念添加到界面中,我认为这不是一件好事?大家觉得怎么样,重要吗?或者我可以用其他方式初始化我的表吗?

最佳答案

您应该从 getTableData 函数的签名中删除 throws SQLException 子句。 SQLException 是在该方法内部处理的,因此不需要抛出它, View 也不需要知道它。

关于java - JTable 作为 MVC 框架的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14414006/

相关文章:

sql - 带时区的 Postgres 时间戳转换

mysql - 设计组织良好且规范化的关系数据库的步骤

java - 使用 GridBagLayout JComponent 未在 JPanel 上显示

java - 背景图像未显示在 JPanel 中

java - 为什么 Dropbox 服务器在尝试通过其 API 上传文件时没有响应?

Java Apache POI : setting default column style doesnt work for existing values

java - 如何在 JTable 中创建带有下拉菜单的额外第一行?

php - 合并多个SQL查询结果

Java Swing BufferedImage 质量差

java - 创建不必要的 getter