栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java JTable检测按用户调整大小的列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java JTable检测按用户调整大小的列

我可以给你一种可能的方法。我试图解决相同的问题,因为我想将有关列宽的信息序列化到磁盘上,以便下次在应用程序中打开表时,可以适当地恢复列宽。开始:

第1步-覆盖您的JTable并向其中添加一个布尔属性

class MyTable extends JTable {    private boolean isColumnWidthChanged;    public boolean getColumnWidthChanged() {        return isColumnWidthChanged;    }    public void setColumnWidthChanged(boolean widthChanged) {        isColumnWidthChanged = widthChanged;    }}

第2步-将TableColumnModelListener()添加到表中

private class TableColumnWidthListener implements TableColumnModelListener{    @Override    public void columnMarginChanged(ChangeEvent e)    {                if(!tableObj.hasColumnWidthChanged())        {  if(tableObj.getTableHeader.getResizingColumn() != null) {     // User must have dragged column and changed width     tableObj.setColumnWidthChanged(true); }        }    }    @Override    public void columnMoved(TableColumnModelEvent e) { }    @Override    public void columnAdded(TableColumnModelEvent e) { }    @Override    public void columnRemoved(TableColumnModelEvent e) { }    @Override    public void columnSelectionChanged(ListSelectionEvent e) { }}

步骤3-将鼠标侦听器添加到表头

private class TableHeaderMouseListener extends MouseAdapter{    @Override    public void mouseReleased(MouseEvent e)    {                if(tableObj.getColumnWidthChanged())        { // Do whatever you need to do here // Reset the flag on the table. tableObj.setColumnWidthChanged(false);        }    }}

注意:
在我的应用程序中,TableHeaderMouseListener和TableColumnWidthListener类是我的主应用程序类的私有内部类。我的主要应用程序类坚持观察的表的引用。因此,这些内部类可以访问表实例。显然,根据您的设置,您需要做适当的事情以使表实例可用于这些其他类。希望这可以帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号