如何在JTable中显示空值?

时间:2018-12-17 15:17:32

标签: java swing null jtable tablemodel

我有一个从数据库中获取数据的表。但是在我的数据库中,有时某些字段可以是空值,而JTable却不显示这些空值。我想在表中将空值显示为NA。我该怎么办?

public void displayMovieTable(){
     try {

         PreparedStatement pr = conn.prepareStatement("select * from movie");
         ResultSet s = pr.executeQuery();
         movieTable.setModel(DbUtils.resultSetToTableModel(s));
         pr.close();

     } catch (SQLException ex) {
         Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
     }
}

1 个答案:

答案 0 :(得分:2)

最简单的可能是包装JDBC的特定表模型。

但是更改显示是一般方法:

TableCellRenderer old = movieTable.getDefaultRenderer(); // I.o. super?
movieTable.setDefaultRenderer(String.class, new DefaultTableCellRenderer() {
    @Override
    public Component getTableCellRendererComponent(JTable table,
                                           Object value,
                                           boolean isSelected,
                                           boolean hasFocus,
                                           int row,
                                           int column) {
        boolean notAvailable = value == null;
        if (notAvailable) {
            value = "N/A";
        }
        Component compon = super.getTableCellRendererComponent(table,
                                           value,
                                           isSelected,
                                           hasFocus,
                                           row,
                                           column);
        if (notAvailable) {
            compon.setBackground(Color.GRAY);
        }
        return compon;
   }
});

这里的问题是可能有多个渲染器。