日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JTable设置列宽、自动调整

發布時間:2024/9/27 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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);?
正解+王道

總結

以上是生活随笔為你收集整理的JTable设置列宽、自动调整的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。