2015-06-01 74 views
1

我有一個JTable放在裏面的JDialog,我想知道是否可以使用JTable尺寸設置Jdialog尺寸(寬度和高度),而不是更多的空間。例如,對話框的高度必須與放置在表格中的高度相同,而沒有可用空間。到目前爲止,我已經使用setSize方法設置了對話框的維度,但是如果我的表格行沒有完全佔據所有空間,那麼高度將會有空閒空間。我只想查看錶格佔用的空間;是否可以將jdialog的尺寸設置爲與jtable放置的尺寸相同?

JDialog d=new JDialog(); 
String columns[]={"Name","Surname","year of birth"}; 
Object rows[][]={{"Mario","rossi","1992"}}; 
JTable t=new JTable(rows,columns); 
d.setSize(200,200); 
d.add(t); 
d.setVisible(true); 

在上面的代碼我已經設置好的爲d的特定尺寸,但這種方式也可能是更大的空間超過高度和寬度!!!有人可以幫助我嗎?

回答

2

不明確設置大小 - 讓佈局管理通過將所有的組件後,呼籲JDialogpack管理它給你:

d.add(t); 
d.pack(); 
d.setVisible(true); 
3

簡短的答案是沒有(或不完全)。裝飾窗口也有窗口邊框和其他「裝飾」,這將使窗口始終大於內容。

您需要的最佳解決方案是使用JDialog#pack,它將圍繞內容的首選大小打包框架。

您還應該知道,在佈局管理器控制下的組件上使用setSize毫無意義。請參閱Laying Out Components Within a Container瞭解更多詳情

JDialog d=new JDialog(); 
String columns[]={"Name","Surname","year of birth"}; 
Object rows[][]={{"Mario","rossi","1992"}}; 
JTable t=new JTable(rows,columns); 
table.setPreferredScrollableViewportSize(new Dimension(200, 200)); 
d.add(new JScrollPane(t)); 
d.pack(); 
d.setVisible(true); 
+0

太棒了!它的作品,非常感謝你!以適合對話框精確的高度表我已經設置對象的高度值Dimension with t.getRowHeight()* rows.length !!! – altair