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

本文介绍了如何在Java中处理JLabel列表,当内容超出JPanel设定高度时,自动显示滚动条。通过调整JTable的首选大小,并考虑到表头的高度,实现了滚动条的正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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列表的标题将会被覆盖

 

输出如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值