在mapxtreme 中visualMapJ1MouseClicked 事件只能便用左鍵,如果想要右鍵彈出信息的話,非常的不方便,下面是一個(gè)臨時(shí)的解決辦法:
private void visualMapJ1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO 將在此處添加您的處理代碼:
if(evt.getButton() == MouseEvent.BUTTON1){
JPopupMenu pop =new JPopupMenu(); //右鍵菜單
if(!infoToolListener.getInfo().equals("")){ //取回的地理信息不為空
pop.add(infoToolListener.getInfo()); //把信息加到菜單上
pop.show(evt.getComponent(),evt.getX(),evt.getY()); //在鼠標(biāo)的地方彈出
infoToolListener.clearInfo(); //清除上次信息
}
} else if (evt.getButton() == MouseEvent.BUTTON3){ //如果點(diǎn)的是鼠標(biāo)右鍵,把它模擬成左鍵
try {
Robot robot = new Robot(); // 建個(gè)機(jī)器人
robot.mousePress(InputEvent.BUTTON1_MASK); //模擬左鍵按下
robot.mouseRelease(InputEvent.BUTTON1_MASK); //左鍵彈起
} catch (AWTException ex) {
ex.printStackTrace();
}
}
}
我嘗試了很多辦法,因?yàn)閙apxtreme 中有很多類都是受保護(hù)的,在自己的程序中沒法使用,而且,它耦合度非常的高,我曾經(jīng)想把其中幾個(gè)類反編譯過來使用,結(jié)果發(fā)現(xiàn),需要反編譯的類越來越多,以至于最后可能要把整個(gè)mapxtreme都反編譯過來,所以我放棄了這種想法,只好用模擬實(shí)現(xiàn),另外,MapMouseEvent 繼承了 MouseEvent 但是沒有提供BUTTON 參數(shù),使得左鍵和中鍵可以讀取到,而右鍵卻不行,所以只好用如此古怪的方法。
可能我不應(yīng)該叫它技術(shù)復(fù)雜度, 準(zhǔn)確的說法應(yīng)該是"從UFP 到SLOC 的缺省轉(zhuǎn)換率",公布出來供大家參考.
以下數(shù)據(jù)來自 Jones? http://www.spr.com/library/0Langtbl.htm
Access????????????????????????38
Ada83????????????????????????71
Ada95????????????????????????49
AIShell????????????????????????49
APL???????????????????????????32
Assembly--Basic?????????320
Assembly--Macro??????213
Bassic--ANSI????????????64
Basic--Visual??????????????32
Basic--Compiled?????????91
C?????????????????????????????????128
C++?????????????????????????????55
Cobol(ANSI85)????????????91
Database--Default?????????40
Forth???????????????????????????64
Fortran????????????????????????77
Fortran95?????????????????????71
HTML 3.0???????????????????15
Java???????????????????????????????53
Jovial???????????????????????????107
Lisp??????????????????????????????64
MachineCode???????????????640
Modula 2???????????????????????80
Pascal???????????????????????????91
PERL???????????????????????????27
PowerBuilder???????????????16
Prolog???????????????????????????64
Query--Default???????????????13
Simulation--Default???????? 46
Spreadsheet?????????????????????6
Unix Shell Scripts????????????107
Visual Basic 5.0???????????????29
VisualC++????????????????????????34
第一代語言?????????????????????320
第二代語言?????????????????????107
第三代語言?????????????????????80
第四代語言?????????????????????20
第五代語言?????????????????????4
高級語言????????????????????????64
報(bào)表生成器?????????????????????80
我們公司希望通過語言復(fù)雜度來決定項(xiàng)目獎(jiǎng)金,可是哪一種語言技術(shù)含量更高呢? 大家來投一下票吧,
請選出您熟悉的五種以上語言,按復(fù)雜度排一下序,(最復(fù)雜的排在最前面).謝謝支持!
APL、A+、J 、ASP、Ada 、匯編語言、AWK 、Basic、Fortran 、Brainfuck 、C、C++ 、C#
Clipper 、COBOL 、dBase 、PASCAL、Delphi 、Forth 、FoxPro、F# 、IDL 、Java 、JavaScript
J# 、LISP 、LOGO 、Modula 、Perl 、PHP 、PL/1 、Prolog 、Python 、Ruby 、Scheme 、Smalltalk
SQL 、Tcl/Tk 、Visual Basic 、Visual FoxPro
表:?
????? 通常表示一個(gè)圖層的所有信息包括"幾何信息"和"屬性信息" mapinfo使用( .tab)格式,可以用
????? 文本編輯器打開
???MapInfo .tab 文件可以組織成為一組用于構(gòu)建圖層的文件。MapInfo 表包含以下類型的關(guān)聯(lián)文件:
???
???*.tab:此文件說明 MapInfo 表的結(jié)構(gòu)。這是一個(gè)說明數(shù)據(jù)文件格式的小文本文件。
???*.dat(.mdb, .dbf, .txt, .xls or .wks):這些文件包含制表數(shù)據(jù)。
???*.map:此文件說明圖形對象(如果表沒有地圖對象,則該文件將不存在)。
???*.id:此文件是一個(gè)交叉索引文件,鏈接數(shù)據(jù)和對象(如果表沒有地圖對象,則該
???文件將不存在)。
???*.ind: 這是一個(gè)索引文件。使用該索引文件,可搜索地圖對象(如果表沒有索引,
???該文件將不存在)。
???這些文件在一起構(gòu)成 MapXtreme Java 中的單一 .tab 圖層。
地圖定義:
????? 地圖定義說明了構(gòu)成地圖的數(shù)據(jù),包括所要顯示的數(shù)據(jù)、存儲位置、數(shù)據(jù)組織為圖層的方
???式、數(shù)據(jù)的顯示方式(如所用顏色、標(biāo)注圖元、地圖縮放設(shè)置)。
????? 地圖定義的格式為:??? .mdf????????
MapInfo Geosets:
?????? MapInfo .tab 文件集稱為 geoset。 如果熟悉 MapInfo Professional,可以注意到 geoset
????? 和工作空間的概念類似。工作空間是一個(gè)已保存的 MapInfo 表 (.tab) 和窗口的配置。無需打開
????? 單個(gè)的 .tab 文件,即可使用其特定的顯示設(shè)置來打開 geoset (somefile.gst) 和所有圖層。
???但是, Geosets 在 MapXtreme Java 中的功能受到了限制。這些限制主要是指不可以保存到
???遠(yuǎn)程數(shù)據(jù)庫的 MapInfo .tab 文件。
???MapXtreme 不能打開 MapInfo 工作空間(.wor 文件類型)。用 MapInfoProfessional,的
???MapInfo Geoset 程序可以將工作空間另存為 geoset,然后用 MapXtreme Java 管理器將它加載到
???MapXtreme Java。
????? Mapinfo Geosets 的格式為 .gst
????? 注:mapinfo 廠家推薦使用??? .mdf??? 在實(shí)際使用過程中還是 .gst 使用比較簡單
圖元
???MapXtreme 中的地圖由地圖對象組成的圖層構(gòu)成。這些地圖對象可通過圖元對象在 MapXtreme
???中訪問。此處有三種基本圖元類型:
???
???區(qū)域:?指覆蓋給定區(qū)域的閉合對象。可以想像為一個(gè)面,其中包括多邊形、橢圓和矩形。
???????區(qū)域包括國界、郵政編碼邊界和銷售區(qū)域等。
???點(diǎn)對象:表示數(shù)據(jù)的單一位置。就是一個(gè)點(diǎn),不能縮放,其示例包括客戶位置、飯店和停車計(jì)時(shí)器等。
???線對象:覆蓋給定距離的開放對象。包括直線、折線和弧線等。其示例有街道、河
???????流和電力線路等。
???????
???不同類型的對象可以放在同一個(gè)圖層中,最常見的是每種對象放在一個(gè)單獨(dú)的圖層中,單獨(dú)放置時(shí),
???使用起來比較方便.??
樣式
???MapXtreme Java 地圖中的所有圖元均顯示特定的可見特征,例如顏色或符號類型。相應(yīng)的
???特征也稱為樣式。MapXtreme Java 包括使用 Java2D API 渲染能力的眾多顯示屬性,其中有
???直線和區(qū)域的符號刷、虛線和平行線、矢量符號和縮放符號和標(biāo)記。
???
標(biāo)注
???標(biāo)注是 MapXtreme Java 中功能強(qiáng)大的特性之一,可用于增強(qiáng)地圖功能,并向用戶提供正確
???的消息。標(biāo)注不僅僅局限于添加文本來說明地圖的特性。使用 MapXtreme Java,可以控制
???字體類型、大小、顏色、位置,并使用光暈和輪廓線等富有創(chuàng)意的效果,為每個(gè)圖層創(chuàng)建
???不同的標(biāo)注。 標(biāo)注內(nèi)容可以通過從圖層數(shù)據(jù)源的一個(gè)或多個(gè)列取數(shù)據(jù)的表達(dá)式來生成。