java swing插件JTable的标题及宽度设置

这篇博客介绍了如何使用Java Swing的JTable组件,并通过外部配置文件动态控制表格的标题和列宽。内容包括从配置文件读取标题顺序,前端页面接收并排序,以及解决手动调整列宽在数据刷新后恢复默认的问题。

标题设置为外部配置文件控制,可更改

 

先从配置文件中按顺序读出来,将标题组合发送到前台页面类

其中columns为标题排列的顺序

    public Map<String,String> readTableHeader(){
        Map<String,String> headerMap = new HashMap<>();
        Properties properties = new Properties();
        try {
            Reader reader = new InputStreamReader(new FileInputStream(filePath),"UTF-8");
            properties.load(reader);
            headerMap.put("Column1",properties.getProperty("Column1"));
            headerMap.put("Column2",properties.getProperty("Column2"));
            headerMap.put("Column3",properties.getProperty("Column3"));
            headerMap.put("Column4",properties.getProperty("Column4"));
            headerMap.put("Column5",properties.getProperty("Column5"));
            headerMap.put("columns",properties.getProperty("columns"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return headerMap;
    }

 

前台页面接收并且根据顺序排好序

//读取配置
propertiesHandler = new PropertiesHandler();
talbeHeaderMap = propertiesHandler.readTableHeader();
names = talbeHeaderMap.get("columns").split(",");
identifyName = talbeHeaderMap.get("Column1");
columnName1 = talbeHeaderMap.get("Column2");
columnName2 = talbeHeaderMap.get("Column3");
columnName3 =talbeHeaderMap.get("Column4"); 
columnName4 = talbeHeaderMap.get("Column5");
columnMap = new HashMap<>();
dataTable = new JTable();
//组织表格
vName = new Vector();
for(int i =0;i<names.length;i++){
    vName.add(names[i]);
    columnMap.put(names[i],i);
    if (columnName1.equals(names[i])){
        columnIndex1 = i;
    }
    if (columnName2.equals(names[i])){
        columnIndex2 = i;
    }
    if (columnName3.equals(names[i])){
        columnIndex3 = i;
    }
    if (columnName4.equals(names[i])){
        columnIndex4 = i;
    }
    if (columnName5.equals(names[i])){
        columnIndex5 = i;
    }
}
vData = new Vector();
tableModel = new DefaultTableModel(vData, vName);
dataTable.setModel(tableModel);

由于此时宽度是平均得,有的列我需要更宽一些,而也有一些用不到这么宽,

可以在页面上面手动拖动,但是数据一刷新上去就又恢复默认了,所以最后找了大神

方法如下:

        dataTable.getColumnModel().getColumn(0).setPreferredWidth(400);
        dataTable.getColumnModel().getColumn(1).setPreferredWidth(150);
        dataTable.getColumnModel().getColumn(2).setPreferredWidth(150);
        dataTable.getColumnModel().getColumn(3).setPreferredWidth(150);
        dataTable.getColumnModel().getColumn(4).setPreferredWidth(1500);

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值