3 只要不将JTable放在JScrollPane中,则不会显示表头。
5 下面代码可以限制某列(columnNum)的宽度。
JTable jTableExpl;
jTableExpl.getColumnModel().getColumn(columnNum).setMaxWidth(60);想交流:[email protected]
5 下面代码可以限制某列(columnNum)的宽度。
JTable jTableExpl;
jTableExpl.getColumnModel().getColumn(columnNum).setMaxWidth(60);想交流:[email protected]
表头啊,还能有什么关系啊?
2 JTableHeader都来做些什么
显示表的列名啊
3 我想隐藏表头,用JTableHeader可以实现吗,怎么实现?
可以,table.getTableHeader().setVisible(false);
4 这一句话是什么意思 header.setSize(header.getPreferredSize());
设置header大小为首选大小。5 能不能锁死列宽?
table.getColumnModel().getColumn(col).setResizable(false);
可以的啊!
有两种方法:
1:就是锁定所有的列啊!(很笨的方法)
2:就是在int Maxwidth=75;
int Minwidth=Maxwidth;
TableColumn clu=JTable.getColumn(1);
clu.setMinWidth(Minwidth);
clu.setMaxWidth(Maxwidth);
看懂了么?设置列的最大宽度等于最小宽度就是的啦!
呵呵!
希望对你有帮助!
呵呵!
表头啊,还能有什么关系啊?
2 JTableHeader都来做些什么
显示表的列名啊
3 我想隐藏表头,用JTableHeader可以实现吗,怎么实现?
可以,table.getTableHeader().setVisible(false);
4 这一句话是什么意思 header.setSize(header.getPreferredSize());
设置header大小为首选大小。5 能不能锁死列宽?
table.getColumnModel().getColumn(col).setResizable(false);
如何锁死列宽
import javax.swing.*;
import javax.swing.table.*;public class JTableTest extends JFrame { public static void main(String args[]) {
JTableTest Test = new JTableTest();
Test.setSize(300,200);
Test.setVisible(true);
}
public JTableTest() {
JTable jt = new JTable(new MyTableModel());
jt.setRowHeight(20);
//getContentPane().add(new JScrollPane(jt));
//jt.getTableHeader().setVisible(false);
}
}class MyTableModel extends AbstractTableModel {
private String[] columns = {"姓名","年龄","已婚"};
private Object[][] data =
{{"王晓明asfsdfsdfsdf",new Integer(28),new Boolean(true)},
{"程晓华",new Integer(26),new Boolean(false)},
{"张小李",new Integer(35),new Boolean(true)},
{"林晓力",new Integer(18),new Boolean(false)}
};
public int getColumnCount() {
return (columns.length);
}
public int getRowCount() {
return (data.length);
}
//public String getColumnName(int col) {
// return (columns[col]);
//}
public Object getValueAt(int row, int col) {
return (data[row][col]);
}
public Class getColumnClass(int col) {
return (getValueAt(0,col).getClass());
}
public boolean isCellEditable( int row,int col) {
return (col > 0 );
}
public void setValueAt(Object value, int row, int col) {
if(col == 1) {
try {
data[row][col] = new Integer((String)value);
}
catch (NumberFormatException e) {
}
}else
data[row][col] = value;
fireTableCellUpdated(row,col);
}
}
public JTableTest() {
JTable jt = new JTable(new MyTableModel());
jt.setCellSelectionEnabled(false);//设定选择
tcm = jt.getColumnModel();
int[] widths1 = {150,25,125};//各列列宽设定,定为3列,真实显示按三者比例
for(i=0;i<widths1.length;i++) {
tc = tcm.getColumn(i);
tc.setPreferredWidth(widths1[i]);
}
jt.setRowHeight(20);
getContentPane().add(new JScrollPane(jt)); }
在class MyTableModel里面添加如下方法,完成替换表头需求:
public String getColumnName(int c) {//覆盖列名,自定义
return columns[c];
}此问题我已经在你另外一个帖子里面回复过了
private TableColumnModel tcm;
private TableColumn tc;
private int i;