当我的表格使用新数据更新时,它会调用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,屏幕上什么都没有。
答案 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会失败,因为它不知道如何显示数据。