2013-01-09 39 views
3

我創建了一個僅用於練習目的的應用程序,其中的JTable用於顯示來自我的數據庫的數據。將JTable修改爲適合屏幕

我的問題是,表格在我的屏幕上顯示了一半的面板。我試過所有的東西,沒有成功地擴大專欄。有人能告訴我如何修改表格嗎?

下面是創建該表的代碼:

public void createTable() { 
    JTable table = new JTable(); 
    DefaultTableModel tableModel = new DefaultTableModel(new Object[][]{},new String[]{"To do","Date added"}); 
    table.setSize(450, 600); 
    table.setModel(tableModel); 
    for(int i = 0; i < model.getId().size(); i++) { 
     tableModel.addRow(new Object[]{model.getItem().get(i), model.getDate().get(i)}); 
    } 
    add(table.getTableHeader()); 
    add(table); 
} 

這裏是如何看現在:

enter image description here

此外,我想請教一下table.getTableHeader(),因爲如果我不補充說,它不會顯示,因爲它是表的一部分..是正常的嗎?

+0

1)爲了更好地幫助越早,張貼[SSCCE(http://sscce.org/)。 2)*「getTableHeader()..不顯示」*將表放在滾動窗格中。 3)*「我已經試過所有的東西來擴大專欄」*很顯然你沒有工作,所以你失敗了。 –

+1

「* JTable在屏幕上顯示JPanel的一半*」然後有趣的不是您創建JTable(這是經典的)的方式,而是您如何創建JPanel。特別是您使用的是什麼版面管顯然,你不想適合屏幕,但適合面板...... – PhiLho

+1

(@Andrew Thompson)所有三點都是最重要的,發佈一個'SSCCE',簡短,可運行,可編譯只是關於'JFrame ''JPanel'中的'JTable',workaroung不是什麼,沒什麼特別的 – mKorbel

回答

4
  • JPanel已在API實現FlowLayout,那麼你的JPanel正確奠定JComponents,用你的邏輯(添加JTableHeader,加JTable

  • 更改,到BorderLayout並把JTableHeaderNORTH/SOUTHJTableCENTER

  • 使用JScrollPane對於JTables view,一切與LayoutManager困擾和計算PreferredSize非常醜陋的方式,

+0

默認的'FlowLayout'是可能的罪魁禍首。 – trashgod

+0

啊謝謝!這對我工作:) – Reshad