标签:
关于JLable列表的自动滚动条的显示:当JLable列表的内容超出JPanel面板所规定的高度时,自动显示滚动条的方法:
通过下面的方式把JLable表的宽度和高度锁死,不能根据列表内容的增加而自动出现滚动条:
JPanel tablePanel = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
JTable teacherTable = new JTable(); //表
teacherTable.setMaximumSize(new Dimension(500, 300));
teacherTable.setPreferredSize(new Dimension(100, 165));
jScrollPane1.getViewport().add(teacherTable);
tablePanel.add(jScrollPane1, new XYConstraints(4, 3, 719, 191));
//初始化Table表
public ArrayList initTeacherTable(){
ArrayList list=this.getTeacherInfo(); //调用getTeacherInfo()方法获取员工信息
DefaultTableModel defaultTableModel1=new DefaultTableModel();
defaultTableModel1.setColumnCount(0);
defaultTableModel1.setRowCount(0);
//添加表头
defaultTableModel1.addColumn("员工编号");
defaultTableModel1.addColumn("姓名");
defaultTableModel1.addColumn("性别");
defaultTableModel1.addColumn("毕业院校");
defaultTableModel1.addColumn("专业");
defaultTableModel1.addColumn("部门");
//添加表格内容
TeacherInfoBean teacherinfo=null;
int i=0;
if(list!=null){
Iterator it=list.iterator();
while(it.hasNext()){
defaultTableModel1.setNumRows(i+1);
teacherinfo=(TeacherInfoBean)it.next();//输出某部门员工信息表
defaultTableModel1.setValueAt(teacherinfo.getTeacherId(),i,0);
defaultTableModel1.setValueAt(teacherinfo.getTeacherName(),i,1);
defaultTableModel1.setValueAt(teacherinfo.getTeacherSex(),i,2);
defaultTableModel1.setValueAt(teacherinfo.getTeacherSchool(),i,3);
defaultTableModel1.setValueAt(teacherinfo.getTeacherTech(),i,4);
defaultTableModel1.setValueAt(teacherinfo.getTeacherDepartmentName(),i,5);//获取部门名称
i++;
}
}else{
System.out.println("error:HRFrame.initTeacherTable()");
}
teacherTable.setModel((TableModel)defaultTableModel1);
//使得表格的选取是以cell为单位,而不是以列为单位.若你没有写此行,则在选取表格数
//据时以整列为单位.
teacherTable.setCellSelectionEnabled(true);
//取得table的ListSelectionModel.
selectionMode= teacherTable.getSelectionModel();
selectionMode.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置为单选
teacherTable.revalidate();
selectionMode.addListSelectionListener(this);
return list;
}
结果如下:列表会显示不出全部内容,所以必须采用自动获取列表高度的方法:
将teacherTable.setPreferredSize(new Dimension(100, 165)); 锁死列表高度的方法改为下面的:
int totalHeight = teacherTable.getPreferredSize().height; //获取列表高度
teacherTable.getTableHeader().setPreferredSize(
new Dimension(100, totalHeight));
输出如下:这样列表的滚动条出来了,但是列表的标题却没显示出来,经过分析发现是只获取列表的高度,会把标题占用的高度覆盖,所以才显示不出来
经过修改如下:
int totalHeight = teacherTable.getPreferredSize().height; //获取列表高度
teacherTable.getTableHeader().setPreferredSize(
new Dimension(100, totalHeight + 20));
//必须是 totalHeight + 20 如果没有20的话,JTable列表的标题将会被覆盖
输出如下:
关于JLable列表的自动滚动条的显示:当JLable列表的内容超出JPanel面板所规定的高度时,自动显示滚动条的方法
标签:
原文地址:http://blog.csdn.net/dalaoadalaoa/article/details/45217781