码迷,mamicode.com
首页 > 其他好文 > 详细

关于JLable列表的自动滚动条的显示:当JLable列表的内容超出JPanel面板所规定的高度时,自动显示滚动条的方法

时间:2015-04-23 10:59:34      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

关于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(jScrollPane1new 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.

            selectionModeteacherTable.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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!