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设置列宽、自动调整的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 房车租赁价格一般多少?哪家房车租赁平台性
- 下一篇: 房车生活家上谁租过房车?这家房车租赁公司