📄 opacetatelayer.java
字号:
package BestRoadGA;
import com.esri.mo2.data.feat.Feature;
import com.esri.mo2.data.feat.SelectionSet;
import com.esri.mo2.map.draw.*;
import com.esri.mo2.ui.bean.*;
import com.esri.mo2.ui.bean.AcetateLayer;
import com.esri.mo2.ui.bean.Map;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class OPAcetateLayer extends AcetateLayer
{
private Map map;
private SelectionSet selectedSet;
private BaseSymbol baseSymbol;
private SimpleLineSymbol sls = new SimpleLineSymbol();
private static Timer timer;
private FlashFeature flashFeature;
private static int timerFlag;
private static boolean displayFeature = false;
public OPAcetateLayer(Map map)
{
this.map = map;
flashFeature = new FlashFeature(this);
timer = new Timer(200, flashFeature);
}
public void setLineSymbol(SimpleLineSymbol sls)
{
this.sls = sls;
}
public void setSelectedSet(SelectionSet selectedSet)
{
this.selectedSet = selectedSet;
}
public SelectionSet getSelectedSet()
{
return selectedSet;
}
public void setDisplySymbol(BaseSymbol baseSymbol)
{
this.baseSymbol = baseSymbol;
}
public BaseSymbol getDisplaySymbol()
{
return baseSymbol;
}
public void startFlash()
{
if (!timer.isRunning()) timer.start();
}
public void stopFlash()
{
if (timer.isRunning()) timer.stop();
}
public void paintComponent(Graphics g)
{
Feature feature;
java.util.Iterator iterator;
try
{
Graphics2D g2d = (Graphics2D) g;
g2d.setTransform(map.getWorldToPixelTransform().toAffine());
g2d.setClip(map.getExtent());
if (selectedSet == null) return;
iterator = selectedSet.iterator();
while (iterator.hasNext())
{
feature = (Feature) iterator.next();
if (!displayFeature)
{
sls.setLineColor(Color.blue);
sls.setStroke(new BasicStroke(2));
setDisplySymbol(sls);
}
else
setDisplySymbol(null);
baseSymbol.draw(feature.getGeometry(), g2d, "");
}
}
catch (Exception e){}
}
class FlashFeature implements ActionListener
{
private OPAcetateLayer opaLayer;
public FlashFeature(OPAcetateLayer opaLayer)
{
this.opaLayer = opaLayer;
}
public void actionPerformed(ActionEvent ae)
{
if (timerFlag < 4)
{
if (timerFlag % 2 == 0)
displayFeature = false;
else
displayFeature = true;
timerFlag++;
}
else
{
displayFeature = false;
timerFlag++;
if (timerFlag >= 10)
timerFlag = 0;
}
opaLayer.repaint();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -