static void setTableWidth(JTable table){ //adjust table width appropriately
ClientFriendTableModel model = (ClientFriendTableModel)table.getModel();
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
int cellWidth = 0;
Object[] longValues = model.longValues;
TableCellRenderer headerRenderer =
table.getTableHeader().getDefaultRenderer(); for (int i = 0; i < 9; i++) {
column = table.getColumnModel().getColumn(i);
/*column.sizeWidthToFit();*/
comp = headerRenderer.getTableCellRendererComponent( 这是什么意思呀
null, column.getHeaderValue(),
false, false, 0, 0);
headerWidth = comp.getPreferredSize().width; 这是什么意思,谢 comp = table.getDefaultRenderer(model.getColumnClass(i)). 这是什么意思
getTableCellRendererComponent(
table, longValues[i],
false, false, 0, i);
cellWidth = comp.getPreferredSize().width; 这是什么意思 column.setPreferredWidth(Math.max(headerWidth, cellWidth)); 这是什么意思
}
}TableColumn column = null;
Component comp = null;
这二个方法是什么意思呀,请告诉我,谢谢;
ClientFriendTableModel model = (ClientFriendTableModel)table.getModel();
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
int cellWidth = 0;
Object[] longValues = model.longValues;
TableCellRenderer headerRenderer =
table.getTableHeader().getDefaultRenderer(); for (int i = 0; i < 9; i++) {
column = table.getColumnModel().getColumn(i);
/*column.sizeWidthToFit();*/
comp = headerRenderer.getTableCellRendererComponent( 这是什么意思呀
null, column.getHeaderValue(),
false, false, 0, 0);
headerWidth = comp.getPreferredSize().width; 这是什么意思,谢 comp = table.getDefaultRenderer(model.getColumnClass(i)). 这是什么意思
getTableCellRendererComponent(
table, longValues[i],
false, false, 0, i);
cellWidth = comp.getPreferredSize().width; 这是什么意思 column.setPreferredWidth(Math.max(headerWidth, cellWidth)); 这是什么意思
}
}TableColumn column = null;
Component comp = null;
这二个方法是什么意思呀,请告诉我,谢谢;
ClientFriendTableModel model =
(ClientFriendTableModel)table.getModel();
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
int cellWidth = 0;
Object[] longValues = model.longValues; TableCellRenderer headerRenderer =
table.getTableHeader().getDefaultRenderer(); for (int i = 0; i < 9; i++) {
column = table.getColumnModel().getColumn(i);
/*column.sizeWidthToFit();*/ /**
* JTable中的每个格子的显示是由TableCellRenderer实现的。
* headerRenderer的实际类型是UIResourceTableCellRenderer,
* 一个TableCellRenderer接口的实现类。
*
* getTableCellRendererComponent的返回对象是其自身
*
* 当前的调用给headerRender设置标题,我估计底层机制会根据设定的String
* 来确定出headerRender的尺寸
*/
comp = headerRenderer.getTableCellRendererComponent( //这是什么意思呀
null, // 如果不是null,本方法会设置背景色、前景色和Border。
column.getHeaderValue(), // 栏目标题,一般情况是String
false, // 是否选中
false, // 是否获得焦点
0, // row
0 // column
); /**
* getPreferredSize()得到comp的初始尺寸
* 返回值是一个Dimension对象
* Dimension对象有两个属性值,height,width
*/
headerWidth = comp.getPreferredSize().width; //这是什么意思,谢 /**
* model的类型是ClientFriendTableModel,应该是TableModel的实现类。
* model.getColumnClass(i)得到table中第i列的值的类型
*
* table.getDefaultRenderer根据column的值类型,给出默认的显示部件,
* 比如,对于String、Number,可能使用JLabel、JTextField等JTextComponent
* 对于Boolean可能使用JCheckBox
*/
comp = table.getDefaultRenderer(model.getColumnClass(i)). //这是什么意思
getTableCellRendererComponent(
table, longValues[i],
false, false, 0, i); /**
* 同headerWidth = comp.getPreferredSize().width;
* 这里得到的cell的宽度
*/
cellWidth = comp.getPreferredSize().width; // 这是什么意思 /**
* 设定column的初始宽度。
*
* 到这里应该清楚了。比较前面获得的headerWidth和cellWidth,取其中的最大值。
*
*/
column.setPreferredWidth(Math.max(headerWidth, cellWidth)); //这是什么意思
}
}TableColumn column = null;
Component comp = null;