2012-08-27 40 views
1

我正在製作一個使用arrayList作爲數據填充的JTable。我在arrayList中有兩組數據。一種用於一種類型的表格,另一種用於另一種類型的表格。是否有可能重載abstractTableModel上的getValueAt方法?

我所希望做的是超負荷的AbstractTableModel上的getValueAt方法,因此,它需要在哪個組數據我想要的參數。

這是可能的,或者我應該考慮一下這種不同的方式?

回答

2

沒有人阻止你超載的方法。這只是JTable代碼不會調用您的新方法。根據您的業務邏輯,您將不得不覆蓋常規的public Object getValueAt(int rowIndex, int columnIndex)並從其中調用其他方法。

0

你可以這樣做,但問題是,在Swing組件不管是誰調用此方法目前不會叫oveloaded一個:)

它不會太多有用的。

從我的角度來看,你已經基本上2個選擇,因爲你需要在2種不同的表類型提出具體的數據:

  • 要麼我會去2條不同的錶款,並保持所有的數據分離
  • 或其他的方法可能是對模型的一些特定的標誌(新場),這將表明你在使用它的表。這一個可以通過制定者在構造函數中,如果你知道哪種類型設置或直接'去吧。

然而,從我的角度來看,第一個將是一個推薦的方式。

0

接受的答案沒有錯,但也考慮第二個TableModel,它與第一個給定的List共享一個引用。一個JTable可以通過簡單地調用setModel()來顯示任一模型。

在此exmaple中,EnvDataModel通過System.getenv()獲得其數據。 A PropDataModel可能通過System.getProperties()獲取其數據。兩者共享訪問System

TableModel first = new EnvDataModel(); 
TableModel second = new PropDataModel(); 
JTable table = new JTable(fisrt); 
... 
table.setModel(second); 
相關問題