JTable设置列宽、自动调整

下面這個方法 你可以用來設置列寬,在你需要的地方調用一下就可以了

Java code

public void FitTableColumns(JTable myTable) {               //設置table的列寬隨內容調整

        JTableHeader header = myTable.getTableHeader();

        int rowCount = myTable.getRowCount();

        Enumeration columns = myTable.getColumnModel().getColumns();

        while (columns.hasMoreElements()) {

            TableColumn column = (TableColumn) columns.nextElement();

            int col = header.getColumnModel().getColumnIndex(

                    column.getIdentifier());

            int width = (int) myTable.getTableHeader().getDefaultRenderer()

                    .getTableCellRendererComponent(myTable,

                            column.getIdentifier(), false, false, -1, col)

                    .getPreferredSize().getWidth();

            for (int row = 0; row < rowCount; row++){

                int preferedWidth = (int) myTable.getCellRenderer(row, col)

                        .getTableCellRendererComponent(myTable,

                                myTable.getValueAt(row, col), false, false,

                                row, col).getPreferredSize().getWidth();

                width = Math.max(width, preferedWidth);

            }

            header.setResizingColumn(column);

            column.setWidth(width + myTable.getIntercellSpacing().width);

        }

    }

方案二:

javax.swing.table.TableColumnModel tcm = jTable1.getColumnModel(); 
javax.swing.table.TableColumn tc =tcm.getColumn(1); 
tc.setPreferredWidth(130);

方案三:

table.getColumn("column name").setMinWidth(width); 
table.getColumn("column name").setMaxWidth(width); 
table.setColumnsToFit(0); //据说是JTable的bug,必须如此调用

方案四:

and use the following fuction to automatically adjust 

private void initColumnSizes(JTable table, MyTableModel model, Object[][] tableData){ 
TableColumn column = null; 
int headerWidth = 0; 
int cellWidth = 0; 

//resize the first columan size to feet 
for(int i = 0; i<1; i++){ 
column = table.getColumnModel().getColumn(i); 
String colName = tmodel.getColumnName(i); 
JTextField t = new JTextField(colName); 
headerWidth = new Double((t.getPreferredSize().getWidth())).intValue(); 
for(int j =0; j<tableData.length ; j++){ 
t = new JTextField(tableData[j][i].toString()); 
cellWidth = Math.max(cellWidth, t.getPreferredSize().width); 

column.setPreferredWidth(Math.max(headerWidth, cellWidth)); 

}

//设置JTable水平滚动条

你的代码是不是这样的: 
JTable table = new JTable(model); 
getContentPane().add(new JScrollPane(table),Border.CENTER); 

如果是这样的,你所看到的默认的滚动条并不是JTable的,而是JScrollPane的。 
对于JScroolPane类的构造函数JScrollPane(),其垂直和水平滚动条只是在需要的时候才出现,坦白点说就是当JTable的 HEIGHT>JScrollPane的HEIGHT时,垂直滚动条出现;JTable的WIDTH>JScrollPane的WIDTH 时,水平滚动条出现。 
若你一定要让水平滚动条出现,可如下: 
getContentPane().add(new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS),Border.CENTER); 
ps: 
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
是用来设置JTable的列宽度是否随着JTable的变化而变化。 
off固定不变。~

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
正解+王道

时间: 2024-11-17 16:08:44

JTable设置列宽、自动调整的相关文章

Excel表格设置列宽、行高动画教程

<Excel2003入门动画教程7.Excel表格设置列宽.行高>. 演示动画 操作步骤 拖拉法:将鼠标移到Excel表格行(列)标题的交界处,成双向拖拉箭头状时,按住左键向右(下)或向左(上)拖拉,即可调整行(列)宽(高). 双击法:将鼠标移到行(列)标题的交界处,双击鼠标左键,即可快速将行(列)的行高(列宽)调整为"最合适的行高(列宽)". 设置法:选中需要设置行高(列宽)的行(列),执行"格式行(列)行高(列宽)"命令,打开"行高(列宽)

Swing之JTable的详细介绍(转)

表格(Table)的使用与介绍8-1:使用JTable组件:类层次结构图:java.lang.Object--java.awt.Component--java.awt.Container--javax.Swing.JComponent--javax.Swing.JTabel 一个CRUD的Demo package frame; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*;

求教:gridview导出Excel后,表格的列宽如何设成最适应列宽。

问题描述 gridview导出Excel后,表格的列宽如何设成最适应列宽.还有,表格除了GridView的内容外,其余的空白表格没有网格线.求大神教教.谢谢了.急.protectedvoidButton1_Click(objectsender,EventArgse){Export("application/ms-excel","学生成绩报表.xls");GridView1.Enabled=true;}privatevoidExport(stringFileType,

Spread for Windows Forms快速入门(15)---使用 Spread 设计器

通过 Spread 设计器用户可以快速地对 Spread 控件进行设计.无论用户是正在做一个关于 Spread 控件特性的原型研究,还是对于一个已经存在的 Spread 控件在某些方面进行进一步的定制,Spread 设计器专有的图形界面可节省大量的时间和精力.Spread 设计器允许用户添加数据,同时设置控件属性,而且还包括那些在 Visual Studio 中无法设置的属性.用户可以同时设置运行时和设计时属性,大多数情况下用户可以在应用设置之前预览效果,设置完成后,就可以将所有的设置应用到 S

玩转WPS表格的度量单位

WPS表格是国产优秀办公软件金山WPS Office的三大组件之一,类似于MS Office中的Excel.同WPS文字一样,也有英寸.厘米.毫米.磅等几种度量单位.基于表格的特性,没有默认度量单位的设置,也没有段落.标尺.字符间距的设置,但由于引入了列宽单位,其设置也很讲究技巧.公式.函数和插件的巧妙运用,可以让度量单位的转换变得轻而易举. 1.页面设置 "页面设置"对话框中"页面"选项卡中"自定义纸张大小"的默认度量单位是厘米,在"

用C#制作PDF文件全攻略

攻略 前 言丽水市汽车运输集团有限公司信息中心 苟安廷PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段"暴力"破解的方法,代码片断如下: StreamWriter pPDF=new StreamWriter(filePath); ArrayList xRefs=new ArrayList(); float yPos =0f; long streamStart=0; l

浅谈Excel的VB编程

  Excel是一个优秀的电子表格软件,如果你编的程序需要以报表的形式显示最终结果,它会是个不错的选择.你可以通过VB控制Excel显示数据表格.如果你不愿意深入了解Excel这些琐碎的细节,也不是没有权宜之计:你可以打开Excel中的工具→宏→录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行.这样得到的程序一般都能正常运行,但其中的宏代码往往不够简洁,效率和可读性都不高. ----Excel编程碰到的第一个问题是表头.有时表头的形式比较复杂,需要横向或纵向合并单元格.请放心

DataGridView怎么调整列宽

DataGridView有一个属性是AutoSizeColumnMode,他有几个枚举值: 1.AllCells 调整列宽,以适合该列中的所有单元格的内容,包括标题单元格. 2.AllCellsExceptHeader 调整列宽,以适合该列中的所有单元格的内容,不包括标题单元格. 3.ColumnHeader 调整列宽,以适合列标题单元格的内容. 4.DisplayedCells 调整列宽,以适合当前屏幕上显示的行的列中的所有单元格的内容,包括标题单元格. 5.DisplayedCellsExc

C# 使用 NPOI 库读写 Excel 文件

原文:C# 使用 NPOI 库读写 Excel 文件 NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx.官网提供了一份 Examples,给出了很多应用场景的例子,打包好的二进制文件类库,也仅有几MB,使用非常方便. 读Excel NPOI 使用 HSSFWorkbook 类来处理 xls,XSSFWorkbook 类来处理 xlsx,它们都继承接口 IWorkbook,因此可以通过