JTable设置列宽、自动调整

简介: 下面這個方法 你可以用來設置列寬,在你需要的地方調用一下就可以了 Java code public void FitTableColumns(JTable myTable) {               //設置table的列寬隨內容調整         JTableHeader header = myTable.getTableH


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

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); 
正解+王道

目录
相关文章
|
7月前
LabVIEW 调整Table表格行高列宽的方法与例程
LabVIEW 调整Table表格行高列宽的方法与例程
422 1
|
7月前
LabVIEW在运行时调整表控件列宽
LabVIEW在运行时调整表控件列宽
97 0
|
前端开发
bootstrap table分页悬停颜色改变
bootstrap table分页悬停颜色改变
39 0
table怎么实现部分列固定宽度,其它列宽自适应拉伸
table怎么实现部分列固定宽度,其它列宽自适应拉伸
514 0
table怎么实现部分列固定宽度,其它列宽自适应拉伸
|
Java
Jtable自动适应列宽
Jtable自动适应列宽
267 0
Pictrue控件调整大小
Pictrue控件调整大小
90 0
|
人工智能 C#
c#中在datagridview的表格动态增加一个按钮方法
c#中在datagridview的表格动态增加一个按钮方法,如果想要这一套教程的可以移步去这里 《期末作业C#实现学生宿舍管理系统》,对了最近我们有一个人工智能交流群,如果大家对代码有问题,想交流的可以进群,私聊我就可以了! 效果图片 : 在Load事件中写入代码 那ui有了功能怎么办呢?别急我们在 dataGridView1_CellContentClick事件中添加方法 这样的话 我们就可以点击对应行的修改来获取到id的值这里有一个bug就是第三行没数据需要隐藏,现在还没有解决,欢迎大家指出!.....
675 0
c#中在datagridview的表格动态增加一个按钮方法
ElementUI el-table 设置固定列,横向滚动条在固定列的位置上无法滚动的问题
ElementUI el-table 设置固定列,横向滚动条在固定列的位置上无法滚动的问题
1898 0