1. 程式人生 > >重寫getColumnName()方法報錯java.lang.StackOverflowError

重寫getColumnName()方法報錯java.lang.StackOverflowError

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