brunajeniferf ,
Efetuei algumas pequenas modificações na sua classe ( veja linha 134,138, e 317 até 327) :
package br.ufpr;
import com.svcon.jdbf.DBFReader;
import com.svcon.jdbf.JDBFException;
import com.vividsolutions.jts.geom.Dimension;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.MultiLineString;
import com.vividsolutions.jts.geom.MultiPolygon;
import com.vividsolutions.jts.geom.Polygon;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.geotools.data.FeatureSource;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.map.DefaultMapContext;
import org.geotools.map.MapContext;
import org.geotools.renderer.GTRenderer;
import org.geotools.renderer.lite.StreamingRenderer;
import org.geotools.styling.FeatureTypeStyle;
import org.geotools.styling.Fill;
import org.geotools.styling.Graphic;
import org.geotools.styling.Mark;
import org.geotools.styling.Rule;
import org.geotools.styling.Stroke;
import org.geotools.styling.Style;
import org.geotools.styling.StyleFactory;
import org.geotools.styling.Symbolizer;
import org.geotools.swing.JMapFrame;
import org.geotools.swing.JMapPane;
import org.geotools.swing.data.JFileDataStoreChooser;
import org.geotools.swing.event.MapMouseEvent;
import org.geotools.swing.tool.CursorTool;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.GeometryDescriptor;
import org.opengis.filter.Filter;
import org.opengis.filter.FilterFactory2;
import org.opengis.filter.identity.FeatureId;
import javax.swing.UnsupportedLookAndFeelException;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.table.DefaultTableModel;
import net.sourceforge.squirrel_sql.client.util.PrintUtilities;
import org.geotools.styling.SLD;
import org.geotools.swing.action.InfoAction;
import org.geotools.swing.action.PanAction;
import org.geotools.swing.action.ZoomInAction;
import org.geotools.swing.action.ZoomOutAction;
import org.opengis.filter.expression.Expression;
public class DesktopFrame extends br.ufpr.JMapFrame {
private static URL url2;
private Color LINE_COLOR = Color.BLUE;
private Color FILL_COLOR = Color.RED;
private Color SELECTED_COLOR = Color.LIGHT_GRAY;
private static final float OPACITY = 1.0f;
private static final float LINE_WIDTH = 1.0f;
private static final float POINT_SIZE = 10.0f;
private FeatureSource<SimpleFeatureType, SimpleFeature> featureSource;
private FeatureSource<SimpleFeatureType, SimpleFeature> featureSource2;
private String geometryAttributeName;
private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null);
private FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null);
static final DesktopFrame viewer = new DesktopFrame();
static private MapContext map;
static Style style;
static Style style2;
static File file;
PrintUtilities print;
static private String URLDBF;
boolean existeTabela;
public DesktopFrame() {
existeTabela = false;
final JFrame frame = new JFrame("Social Network Visualization");
frame.setLayout(new BorderLayout());
JPanel jPanelCabecalho = new JPanel(new FlowLayout());
JPanel jPanelMeio = new JPanel(new GridLayout());
jPanelCabecalho.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));
jPanelMeio.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));
frame.getContentPane().add(jPanelCabecalho, BorderLayout.NORTH);
frame.getContentPane().add(jPanelMeio, BorderLayout.CENTER);
JButton btn_dbf = new JButton("Tabela");
btn_dbf.setToolTipText("Click this button to open table in the DBF file.");
JMapPane jMapPane = new JMapPane();
jPanelMeio.add(jMapPane);
MapContext map = new DefaultMapContext();
jPanelCabecalho.add(btn_dbf);
URL url1;
FileDataStore store1;
try {
url1 = new URL("file:/I:/dadosBruna/bairros.shp");
store1 = FileDataStoreFinder.getDataStore(url1);
FeatureSource featureSource1 = store1.getFeatureSource();
Style style1 = SLD.createPolygonStyle(Color.lightGray, null, 1.0F);
map.addLayer(featureSource1, style1);
} catch (IOException ex) {
Logger.getLogger(DesktopFrame.class.getName())
.log(Level.SEVERE, null, ex);
}
try {
URL url2 = new URL("file:/I:/dadosBruna/saude_enlaces.shp");
FileDataStore store2 = FileDataStoreFinder.getDataStore(url2);
FeatureSource featureSource2 = store2.getFeatureSource();
Style style2 = SLD.createLineStyle(Color.BLUE, 1F);
map.addLayer(featureSource2, style2);
} catch (IOException ex) {
Logger.getLogger(DesktopFrame.class.getName())
.log(Level.SEVERE, null, ex);
}
try {
URL url3 = new URL("file:/dadosBruna/pontos_saude.shp");
FileDataStore store3 = FileDataStoreFinder.getDataStore(url3);
FeatureSource featureSource3 = store3.getFeatureSource();
Style style3 = SLD.createPointStyle("Circle",
Color.RED, Color.RED, 1, 8, null, null);
map.addLayer(featureSource3, style3);
} catch (IOException ex) {
Logger.getLogger(DesktopFrame.class.getName())
.log(Level.SEVERE, null, ex);
}
jMapPane.setMapContext(map);
jMapPane.setRenderer(new StreamingRenderer());
jMapPane.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));
JMenuBar jMenuBar = new JMenuBar();
//jMenuBar.setBackground(Color.lightGray);
// Botões
JMenu jMenu = new JMenu("File");
JMenuItem abrir = new JMenuItem("Abrir");
JMenuItem sair = new JMenuItem("Sair");
JMenuItem jMenuItem = new JMenuItem("Exit");
jMenu.add(abrir);
jMenu.add(sair);
jMenu.add(jMenuItem);
// Ação do botão Exit no menu File
jMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
JMenu jMenu2 = new JMenu("Network");
JMenuItem jMenuItem21 = new JMenuItem("Health");
JMenuItem jMenuItem22 = new JMenuItem("Labor");
JMenuItem jMenuItem23 = new JMenuItem("Education");
JMenuItem jMenuItem24 = new JMenuItem("Social Assistance");
JMenuItem jMenuItem25 = new JMenuItem("Housing");
JMenuItem jMenuItem26 = new JMenuItem("Food Secutiry");
JMenuItem jMenuItem27 = new JMenuItem("Complete Network");
jMenu2.add(jMenuItem21);
jMenu2.add(jMenuItem22);
jMenu2.add(jMenuItem23);
jMenu2.add(jMenuItem24);
jMenu2.add(jMenuItem25);
jMenu2.add(jMenuItem26);
jMenu2.add(jMenuItem27);
jMenuBar.add(jMenu);
jMenuBar.add(jMenu2);
frame.setJMenuBar(jMenuBar);
URL url4;
try {
url4 = new URL("file:/dadosBruna/rede_assistencia_social.PNG");
BufferedImage bufferedImage;
try {
bufferedImage = ImageIO.read(url4);
JLabel jLabel = new JLabel(new ImageIcon(bufferedImage));
jLabel.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));
jPanelMeio.add(jLabel, BorderLayout.CENTER);
} catch (IOException ex) {
Logger.getLogger(DesktopFrame.class.getName())
.log(Level.SEVERE, null, ex);
}
} catch (MalformedURLException ex) {
Logger.getLogger(DesktopFrame.class.
getName()).log(Level.SEVERE, null, ex);
}
JButton jButtonZoomIn = new JButton(new ZoomInAction(jMapPane));
JButton jButtonZoomOut = new JButton(new ZoomOutAction(jMapPane));
JButton jButtonPan = new JButton(new PanAction(jMapPane));
JButton jButtonIdentify = new JButton(new InfoAction(jMapPane));
jPanelCabecalho.add(jButtonZoomIn);
jPanelCabecalho.add(jButtonZoomOut);
jPanelCabecalho.add(jButtonPan);
jPanelCabecalho.add(jButtonIdentify);
// Criando o JPanel para a locação da tabela DBF
final JPanel jPanelRodape = new JPanel(new FlowLayout());
javax.swing.GroupLayout jPanelLayout =
new javax.swing.GroupLayout(jPanelRodape);
jPanelRodape.setLayout(jPanelLayout);
jPanelLayout.setHorizontalGroup(
jPanelLayout.createParallelGroup
(GroupLayout.Alignment.LEADING).addGap(0, 600,
Short.MAX_VALUE)
);
jPanelLayout.setVerticalGroup(
jPanelLayout.createParallelGroup
(GroupLayout.Alignment.LEADING).addGap(0, 200, Short.MAX_VALUE));
frame.getContentPane().add(jPanelRodape, BorderLayout.SOUTH);
jPanelRodape.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));
// Action Listener para abrir o arquivo dbf
// Quando se abre um arquivo shape (8.shp0 o mesmo pega o mesmo endereço
// utilizado e já procura um arquivo de mesmo nome e de extenção (*.dbf).
btn_dbf.addActionListener(new ActionListener(){
private Object dbf;
public void actionPerformed(ActionEvent a){
// aqui a chamada
if( existeTabela ) {
jPanelRodape.remove( tabelaDBF );
JTable tabelaDBF = new JTable();
jPanelRodape.add( tabelaDBF );
} else {
JTable tabelaDBF = new JTable();
jPanelRodape.add( tabelaDBF );
existeTabela = true;
}
try{
//enderecoDBF = "I:/dadosBruna/bairros.dbf";
int numeroLinhasDBF = DBFdata.numeroLinhas(DesktopFrame.URLDBF);
int numeroColunasDBF = DBFdata.numeroColunas(DesktopFrame.URLDBF);
tabelaDBF.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//Ativa barra de rolagem horizontal
tabelaDBF.setModel(new ModeloTabela(DBFdata.cabecalhoTabela
(DesktopFrame.URLDBF), numeroLinhasDBF, numeroColunasDBF));
if(numeroColunasDBF < 19){
// define o tamanho das colunas em tabelas com o numero pequeno de colunas
for (int i =0; i < numeroColunasDBF; i++){
tabelaDBF.getColumnModel().getColumn(i).setPreferredWidth
((jPanelRodape.getWidth()/numeroColunasDBF)-7);
}
}
InputStream stream = new BufferedInputStream
(new FileInputStream (DesktopFrame.URLDBF));
DBFReader dbf = new DBFReader(stream);
for (int i = 1; i < numeroLinhasDBF; i++) {
Object aobj[] = dbf.nextRecord();
for (int j = 0; j < aobj.length; j++) {
if (aobj[j] == null) {
aobj[j] = "";
}
tabelaDBF.setValueAt(aobj[j].toString(), (i -1), j);
}
}
} catch (FileNotFoundException ex) {
Logger.getLogger(DesktopFrame.class.getName()).log(Level.SEVERE,
null, ex);
}
catch (JDBFException ex){
Logger.getLogger(DesktopFrame.class.getName()).log(Level.SEVERE,
null, ex);
}
JScrollPane scrollPane = new JScrollPane(tabelaDBF);
scrollPane.setLocation(0,0);
scrollPane.setSize(700,200);
jPanelRodape.add(scrollPane);
jPanelRodape.setVisible(true);
}
});
abrir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
loadloadShapeFile();
// O mapPane.reset();" abaixo foi adicionado para eliminar a demora na pintura
// do shape na tela, que anteriormente a ele estava acontecendo.
mapPane.reset();
} catch (Exception ex){
Logger.getLogger(DesktopFrame.class.getName()).log(Level.SEVERE,
null, ex);
}
}
});
sair.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
frame.dispose();
} catch (Throwable ex){
Logger.getLogger(DesktopFrame.class.getName()).log(Level.SEVERE,
null, ex);
}
}
});
initComponents();
//obtendo dimensos da tela
frame.setSize(600, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) throws MalformedURLException, IOException, Exception{
//URL url2 = new URL("file:/I:/dadosBruna/saude_enlaces.shp");
// DesktopFrame app = new DesktopFrame();
//
// app.displayShapefile(url2);
DesktopFrame app = new DesktopFrame();
app.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
static public void loadloadShapeFile() throws Exception{
file = JFileDataStoreChooser.showOpenFile("shp",null);
setURLDBF(file.getAbsolutePath().substring(
0, file.getAbsolutePath().length() - 4) + ".dbf");
if ( file == null){
System.out.println("erro aquii");
return;
}
}
static public void loadShapeFile() throws Exception{
file = JFileDataStoreChooser.showOpenFile("shp",null);
setURLDBF(file.getAbsolutePath().substring(
0, file.getAbsolutePath().length() - 4) + ".dbf");
if ( file == null){
System.out.println("erro aquii");
return;
}
}
static public String getURLDBF(){
return URLDBF;
}
static public void setURLDBF(String URLDBF){
DesktopFrame.URLDBF = URLDBF;
}
}
Testa ai , Espero que funcione , ou pelo menos chegue perto de funcionar.