2010-07-27 76 views
3

該代碼把一個JTable成一個JFrame(整個UI的鞋底組件):當我調整JFrame的大小時,如何保留JTable的列的大小?

JFrame frame = new JFrame("Title"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JTable table = appender.createTable(); 
    JScrollPane scrollPane = new JScrollPane(table); 
    table.setFillsViewportHeight(true); 
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER); 

    frame.pack(); 
    frame.setVisible(true); 

我也有一些碼來設置的列的優選大小。

沒什麼特別的。當用戶界面打開時,表格佔據整個視圖,而我沒有滾動條。列的組合首選寬度需要比窗口寬的更多的水平空間。儘管如此,沒有水平滾動條,列太窄。

我有什麼做

  1. 列仍然由用戶
  2. 當前寬度可調整大小的被尊重?即當我改變一列的寬度時,其他列的寬度不應該改變。

回答

3
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

也可以包含表滾動面板添加到JPanel,然後將面板添加到該幀。這樣面板的大小就會改變,而不是滾動面板。

+2

已經看到了這個問題,預計從某人那裏得到快速回答,並且一天結束讓我太慢而無法與之競爭。我只是將此鏈接添加到[swing教程](http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/components/table.html#width)以及相應的[javadoc ](http://tinyurl.com/2emgeb3) – Gnoupi 2010-07-27 15:28:08

+0

添加中間JPanel有什麼好處?我看不到列,表,滾動窗格或框架行爲的差異。 – bobndrew 2010-07-28 08:48:41

+0

我以爲我讀了一些關於你想要保持表的總大小不變(但我可能是錯的)。無論如何,當您使用BorderLayout將滾動窗格添加到框架時,滾動窗格的大小隨着框架大小的變化而變化。但是,您首先將面板添加到面板(默認情況下使用FlowLayout),表格的大小將得到遵守。如果您將這個面板添加到框架中,那麼當您調整框架大小時,面板將更改大小,但表格大小不會更改。 – camickr 2010-07-29 00:55:12

相關問題