2012-07-24 39 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); 
    } 
} 
相关问题