为什么TableCellRenderer为null?

时间:2016-03-23 16:50:02

标签: java nullpointerexception jtable tablecellrenderer

当我的表格使用新数据更新时,它会调用prepareRenderer。默认情况下,这是JTable在更新时所执行的操作。但是,当我的程序调用prepareRenderer方法时,它在它的参数中给它一个空的TableCellRenderer。因此我得到一个空指针异常。

    dataTable = new javax.swing.JTable() {
        @Override
        public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
            return super.prepareRenderer(renderer, row, column);
        }
    };

这就是我宣布它的方式。甚至不需要@Override。我把它放在那里,所以我可以在其中放置一个断点,这样我就可以看到它实际上正在触发,以及参数的价值是什么。无论出于何种原因,当java调用此prepareRender方法时,它为TableCellRenderer参数提供null值。为什么这样做,我该如何解决?由于NPE,屏幕上什么都没有。

1 个答案:

答案 0 :(得分:0)

问题出在我的tablemodel中。具体来说, @Override protected ArrayList<Bitmap> doInBackground(String... params) { String phpurl = "http://192.168.1.11/save/load_image_from_db.php?id=3"; URL url; Bitmap image = null; try { url = new URL(phpurl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); image = BitmapFactory.decodeStream(connection.getInputStream()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return image; } 方法没有返回任何内容(仅限null),因为我对返回进行了编码。如果getColumnClass方法不起作用,则tablecellrender会失败,因为它不知道如何显示数据。