2012-04-12 160 views
1

如何使用AbstractTableModel預填充JTable的第一列?填充JTable的第一列

我想在第一列放入時間段,然後用別的東西填充其他列。

好吧,ChannelTableModel將被GUI中的JTables使用。基本上它從6點30分到24點設置30分鐘的時間段。時隙必須放在JTable的第一行

以某種方式,我需要設置一個變量'row'來獲取AbstractTableModel中的行值,我很難做到這一點。

以下是目前爲止的代碼。

代碼:

import java.util.List; 
import javax.swing.table.AbstractTableModel; 


public class ChannelTableModel extends AbstractTableModel 
{ 


    public ChannelTableModel(List<Program> schedule) 
    { 
     this.channel= schedule; 
    } 


    public int getColumnCount() 
    { 
     return 3; 
    } 


    public int getRowCount() 
    { 
     return 37; 
    } 


    public Object getValueAt(int rowIndex, int columnIndex) 
    { 

     switch (columnIndex) 
     { 
     case 0: return 6+((row*30)/60)+":"+(row % 2 == 0 ? "00" : "30") + " - " + (6 +(((row+1)*30)/60)+":"+(row % 2 != 0 ? "00" : "30")); 
     default: return "Not Available."; 
     } 

    } 

} 

如何創建變量 「行」,使TableModel的可行?

+0

AbstractTableModel是抽象的,因此不能在沒有進一步實現的情況下使用。你可以發佈一些代碼來顯示你在做什麼? – ControlAltDel 2012-04-12 15:10:46

+0

_如何創建變量「row」以使TableModel可用?作爲參數傳遞給該方法的rowIndex是行...爲什麼不使用那個? – Robin 2012-04-12 15:43:42

+0

另請參見['EnvTableTest'](http://stackoverflow.com/a/9134371/230513)。 – trashgod 2012-04-12 18:21:34

回答

0

通常你只是特例第一欄。例如,如果「真實數據」在矩陣中。示意圖:

public class AddColumn0TableModel extends AbstractTableModel { 

    final int columnCount, rowCount; 
    final Object wrappedData[][]; 

    public AddColumn0TableModel(Object[][] wrappedData) { 
     this.wrappedData = wrappedData; 
     // assume nice square data, YMMV 
     columnCount= 1 + wrappedData.length; 
     rowCount = wrappedData[0].length; 
    } 

    public int getRowCount() { return rowCount; } 

    public int getColumnCount() { return columnCount; } 

    public Object getValueAt(int row, int column) { 
     if (column == 0) 
     // implement this, in your case the time slot 
     return theSpecialThingForColumn0(row); 
     else 
      return wrappedData[column-1][row]; 
    } 

} 

p.s.與訂購相比,我在矩陣上訂購錯誤的機會有50/50。 :-)