2012-09-23 55 views
1

Jtable不顯示列標題。我正在使用矢量來填充JTable,但它似乎仍然不起作用。下面的代碼:JTable中沒有標頭

public class InsertFileToJtable extends AbstractTableModel{ 
Vector data; 
Vector columns; 
private String[] colNames = {"col1","col2","col3","col4","col5","col6","col7","col8"}; 


public InsertFileToJtable() { 
String line; 
data = new Vector(); 
columns = new Vector(); 
    try { 
     FileInputStream fis = new FileInputStream("ProcessList.txt"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 
     StringTokenizer st1 = new StringTokenizer(br.readLine(), " "); 
     while (st1.hasMoreTokens()) 
       columns.addElement(st1.nextToken()); 
     while ((line = br.readLine()) != null) { 
       StringTokenizer st2 = new StringTokenizer(line, " "); 
       while (st2.hasMoreTokens()) 
         data.addElement(st2.nextToken()); 
     } 
     br.close(); 
} catch (Exception e) { 
     e.printStackTrace(); 
} 

} 

public int getRowCount() { 
return data.size()/getColumnCount(); 
} 

public int getColumnCount() { 
return columns.size()-1; 
} 

public Object getValueAt(int rowIndex, int columnIndex) { 
return (String) data.elementAt((rowIndex * getColumnCount()) 
       + columnIndex); 
} 
@Override 
public String getColumnName(int column) { 
return colNames[column]; 
} 
@Override 
public Class getColumnClass(int col){ 
return getValueAt(0,col).getClass(); 
} 
} 

下面是該表是從主叫:

public static void main(String[] args) { 
    InsertFileToJtable model = new InsertFileToJtable(); 
    JTable table = new JTable(model); 
    table.setPreferredScrollableViewportSize(new Dimension(500, 70)); 
    table.setFillsViewportHeight(true); 
    table.setModel(model); 
    JScrollPane scrollpane = new JScrollPane(table); 
    scrollpane.setViewportView(tabbedPane); 
    tabbedPane.addTab("Process",null,table,""); 
    model.fireTableStructureChanged(); 
    JPanel panel = new JPanel(); 
    panel.add(scrollpane); 
    frame.add(panel); 
    } 

由於我是新手,我沒有什麼是錯的任何線索。任何幫助將不勝感激。謝謝!

+0

BTW刪除它:* *永遠不會**代表模型發起模型事件 - 它必須在適當的情況下自行完成。 – kleopatra

回答

5

爲了使表能夠顯示它的頭,您需要將表添加到滾動窗格。

你開始時還好,但後來又通過改變滾動面板視窗

// This was good 
JScrollPane scrollpane = new JScrollPane(table); 
// Then you changed it 
scrollpane.setViewportView(tabbedPane); 
// Then you added it to the tabbed pane 
tabbedPane.addTab("Process",null,table,""); 

嘗試添加表背到滾動窗格並添加到標籤面板

+0

打破你一秒鐘:-) – kleopatra

+0

總是樂意成爲你的第二名;) – MadProgrammer

+0

@MadProgrammer我做到了,但現在整個過程選項卡從標籤窗格中刪除:(可以做什麼錯? :( –

6

僅當表格位於JScrollPane中時纔會自動添加標頭。如果它不包含在scrollPane中,則必須手動管理標題。在你的代碼中,它最初被添加到scrollPane中,但後來又被移除了 - 通過將該表添加到tabbedPane中。也許不是你想要什麼,而不是添加滾動窗格的標籤:

JScrollPane scrollpane = new JScrollPane(table); 
//scrollpane.setViewportView(tabbedPane); 
tabbedPane.addTab("Process",null,scrollPane,""); 
+0

我這樣做了,但現在進程選項卡已離開選項卡式窗格:(問題沒有得到解決:(@kleopatra –

+0

@IngilaEjaz與以前相同的問題和過程:將tabbedPane添加到面板,而不是滾動窗格 – kleopatra