2016-12-04 36 views
0

我使用NetBeans中創建的JTable-S一些桌面應用程序,我所面臨的麻煩:不能使用公共方法子類的Java

我創建的JTable的子類,假設CustomJTable:

public class CustomJTable extends JTable { 

    private Object[][] someData; 

    public CustomJTable (Object[][] someData) { 
     this.someData = someData; 
    } 

    public doSomething() { 
     // do something 
    } 
} 

public class MyApp { 

    ... 
    public void someMethod (Object[][] someData) { 
     JTable table = new CustomJTable(someData); 
     table.doSomething(); // this method does not belong to JTable and  
           // is unusable to me in NetBeans 
    } 
    ... 
} 

NetBeans說在類JTable中找不到doSomething方法。不,我真的很困惑。謝謝你的建議。

這只是一個縮短的示例代碼來顯示故障源。

+0

您的變量類型是JTable。 JTable中沒有這種方法。將其類型更改爲CustomJTable。也就是說,子類化擺動組件通常是一個壞主意。 –

+0

方法doSomething缺少返回類型,它是一個語法錯誤,不會編譯,你的意思是:public void doSomething(){} – AlexC

+0

而不是'JTable table = new ...'使用'CustomJTable table = new .. .' –

回答

1

您正在實例化JTable的實例,然後嘗試調用屬於CustomJTable的方法。

在CustomJTable中擴展JTable不會爲您提供CustomJTable所擁有的方法。

爲了調用該方法實例化對象的權利:

CustomJTable table = new CustomJTable(someData); 
0

由於運行時多態性會在運行時得到解決。你需要輸入它。

JTable table = new CustomJTable(someData); 
     ((CustomJTable) table).doSomething(); 
相關問題