标题设置为外部配置文件控制,可更改
先从配置文件中按顺序读出来,将标题组合发送到前台页面类
其中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);