2013-08-25 74 views
0

我遇到了一個罕見的問題。 當我把代碼放在一個按鈕的事件中時,它可以正常顯示,但是當我把它放在initComponents()函數的下面(在構造函數中)時,它不起作用。JTable在初始化時不顯示

String[] columnNames = {"Nick", "E-Mail"}; 
Object[][] data = { 
{"Kathy", "[email protected]"}, 
{"John", "Doe"}, 
{"Sue", "Black"}, 
{"Jane", "White"}, 
{"Joe", "Brown"} 

}; 

    jPanel1.setLayout(new BorderLayout()); 
    JTable table = new JTable(data, columnNames); 
    Dimension dim = new Dimension(jPanel1.getWidth(),jPanel1.getHeight()); 
    JScrollPane tableScroll = new JScrollPane(table); 
    tableScroll.setPreferredSize(dim); 
    jPanel1.add(tableScroll, BorderLayout.CENTER); 
    jPanel1.validate(); 

任何想法?

+0

我改變了jPanel1.getWidth( )爲一個數字,它工作d!它就像那個函數在開始時返回0一樣。我不知道爲什麼 – user2712751

+0

你不應該設置JScrollPane的preferredSize,而是讓你的佈局管理員爲你做。 –

+0

如果我不設置首選大小,它會填滿整個屏幕! – user2712751

回答

3
  • 取代Dimension dim = new Dimension(jPanel1.getWidth(),jPanel1.getHeight());

  • 因爲之前JFrame.pack()JFrame.setVisible(true)返回零尺寸[0,0]


  • table.setPreferredScrollableViewportSize(table.getPreferredSize());

+0

當我這樣做,滾動不起作用,我不能看到整個表。 – user2712751

+0

我使用 修復了它table.setPreferredScrollableViewportSize(jPanel1.getPreferredSize()); 謝謝! – user2712751

+0

如果能幫助解決問題,請[接受](http://meta.stackexchange.com/a/65088/155831)。 –