2016-04-15 89 views
0

JTable未出現在窗體中。
這是我的代碼的一部分:使用JScrollPane後,JTable消失

table = new JTable(tasks, names); 
table.setBounds(10, 43, 408, 455); 
contentPane.add(table); 
JScrollPane scroll = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
contentPane.add(scroll); 

但是當我刪除了JScrollPane,它出現。
編輯:我在Eclipse的拖放功能中使用了AbsoluteLayout

回答

3

contentPane.add(table);不是必需的,它看起來像您使用的是null佈局,大概佔了該表沒有出現(如JScrollPane具有0x0

避免使用null的默認大小的事實佈局,像素完美的佈局是現代UI設計中的幻想,影響組件的個體大小的因素太多,而你無法控制其中的任何一個。Swing被設計爲與佈局管理者一起工作,放棄這些會導致沒有結束的問題和問題,你會花更多的時間試圖糾正

有關更多詳細信息,請參閱Laying Out Components Within a Container

+0

我在Eclipse的拖放中使用了AbsoluteLayout。 –

+1

*「我使用了AbsoluteLayout ..」*是的。這比使用'null'佈局更糟糕。它與'空'佈局一樣糟糕(功能上),但給程序員一個印象,即他們對組件放置和邊界有'絕對'控制 - 當他們不這樣做時。或者換一種方式來說明:Java GUI必須在不同的語言環境中使用不同的PLAF來處理不同的操作系統,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。而是使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556).. –

+1

..以及佈局填充和邊框[white space](http://stackoverflow.com /一個/418556分之17874718)。 –