Arcengine for Java 打开属性表

来源:互联网 发布:小米手机无法数据上网 编辑:程序博客网 时间:2024/06/13 07:52
public static JTable openShapeFileAttributeTable(String folder,String name) throws AutomationException, IOException{String dbfFilePath=folder;String dbfFileName=name.split("\\.")[0]+".dbf";//dbf文件的打开//System.out.println("folder: "+folder+"\n"+"dbfFileName: "+dbfFileName);IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();        IWorkspace pWorkspace = pWorkspaceFactory.openFromFile(dbfFilePath,0);        IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;                IFeatureClass pFeatureClass = pFeatureWorkspace.openFeatureClass(dbfFileName);        IFeatureLayer pFeatureLayer = new FeatureLayer();        pFeatureLayer.setFeatureClassByRef(pFeatureClass);        pFeatureLayer.setName(pFeatureLayer.getName());                ILayerFields pLayerFields=(ILayerFields) pFeatureLayer;        IFeatureCursor pFeatureCursor = pFeatureClass.search(null,false);        IFeature pFeature = pFeatureCursor.nextFeature();                //计算有多少元素        int countFeature=0;        while(pFeature!=null){        countFeature++;        pFeature = pFeatureCursor.nextFeature();        }               //定义table的数据        Object rowData[][]=new Object[countFeature][pLayerFields.getFieldCount()];        Object columnNames[]=new Object[pLayerFields.getFieldCount()];                //附上列植        for(int i=0;i<pLayerFields.getFieldCount();i++){        columnNames[i]=pLayerFields.getField(i).getName();        }                IFeatureCursor pFeatureCursor1 = pFeatureClass.search(null,false);        IFeature pFeature1 = pFeatureCursor1.nextFeature();        //附上行列具体的值        int rowNumber=0;        while(pFeature1!=null){                for(int j=0;j<pLayerFields.getFieldCount();j++){         String tempRow;         if(pLayerFields.findField(pFeatureClass.getShapeFieldName()) == j){         tempRow= pFeatureClass.getShapeType()+"";         }else{         tempRow=pFeature1.getValue(j).toString();         }         rowData[rowNumber][j]=tempRow;                }         rowNumber++;        pFeature1 = pFeatureCursor1.nextFeature();        }                JTable table=new JTable(rowData, columnNames);//注意在窗体里面添加JScrollPane scrollPane = new JScrollPane(table);//Table组件显示数据时,需要将其放置在JScrollPane中,表头才会自动显示出来。contentPane.add(scrollPane, BorderLayout.CENTER);                return table;}

0 0
原创粉丝点击