重寫getColumnName()方法報錯java.lang.StackOverflowError
阿新 • • 發佈:2018-03-10
n) vector main thread 想法 color override 文章 nco
我在一個方法裏面初始化了一個列名,並添加了列名
columnNames = new Vector(); columnNames.add("學號"); columnNames.add("姓名"); columnNames.add("性別"); columnNames.add("年齡"); columnNames.add("籍貫"); columnNames.add("系別");
因為在JTable需要需顯示列名,所以就需要重寫繼承了AbstractTableModel中的getColumnName方法。
@Override public String getColumnName(int column) { //return (String) this.columnNames.get(column); return this.getColumnName(column); }
運行一下,報錯:Exception in thread "main" java.lang.StackOverflowError
這就尷尬了啊。首先,我猜測可能是獲取列的長度的方法getColumnCount出問題了
@Override public int getColumnCount() {return this.columnNames.size(); }
但在控制臺輸出,結果是等於6。好吧,不是這個問題。還是在return後面的語句找問題吧。
首先在getColumnName方法中的return後面輸入this.
看工具給我的提示,發現有columnNames,選擇這個再“.”一下發現有get方法,它需要傳一個參數,正好是int,於是乎我有了一個大膽的想法
@Override public String getColumnName(int column) { return (String) this.columnNames.get(column); }
OK,寫好了,運行一下,列名沒毛病的顯示出來了。
很開心,解決了問題,順便寫下這篇文章,記錄身為Java小白的我的解決問題的思路。??
重寫getColumnName()方法報錯java.lang.StackOverflowError