2012-07-24 49 views
0

我在JPanel內部有一個JTable。表中的最大行數是10.根據錶行,我需要調整JPanel的大小。我不應該得到任何scrollPane。根據內部組件調整JPanel的大小

所以,要簡單:基於表的大小,我應該調整面板的大小。這可能嗎?

+0

應該是可能的。只需獲取表格大小及其屬性並根據它設置jpanel。 – CyrillC 2012-07-24 08:49:52

+0

當Jpanel加載時,表格將不會加載。用戶將瀏覽和選擇文件。當面板加載時不會是任何表格。只有在用戶瀏覽並添加文件時,我們纔會添加表格。 – user1548065 2012-07-24 08:53:16

+2

這是LayoutManager的任務 - 閱讀swing標籤中引用的教程中的相應章節 – kleopatra 2012-07-24 08:54:44

回答

1

我相信​​應該返回一個合理的結果。如果tat失敗,則可以使用表字體指標和tabes默認行高來估計大小。

+2

不需要字體指標,rowheight就是你以後的樣子(使用和不使用數據)。 – kleopatra 2012-07-24 09:10:17

+0

*打頭*,是的,你的權利,它應該是rowHeight&rowCount +1 fir保持我在我的腳趾(也+1爲您的開放意識) – MadProgrammer 2012-07-24 09:17:41

1

1.in這種情況下是最好的GridBagLayout標準LayoutManagersJTable放置在JPanel並且不使用JScrollPane

2.notice JTable通過默認不支持上行調整大小vertical direction

import java.awt.BorderLayout; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTable; 

public class TableAndGbc { 

    public static void main(String args[]) throws Exception { 
     JPanel panel = new JPanel(new GridBagLayout()); 
     final JTable table = new JTable(10, 10); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.weightx = 1.0; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     panel.add(table, gbc); 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(panel, BorderLayout.CENTER); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
}