MapString,List dataMap = new HashMapString,List();
創新互聯服務項目包括蘆溪網站建設、蘆溪網站制作、蘆溪網頁制作以及蘆溪網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,蘆溪網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到蘆溪省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
for(int i=0;ixsList.size();i++){
dataMap.put(xsList.get(i).學號, xsList.get(i));
}
for(int i=0;icjList.size();i++){
dataMap.put(cjList.get(i).學號, cjList.get(i));
}
得到的dataMap就是需要插入的數據,不過以前的數據需要先刪再插(而且前提是xsList和cjList泛型得相同)。
話說如果不用map還可以用一個方法:
// 成績表的學號List
ListString cjNum = new ArrayListString();
for(int i=0;icjList.size();i++){
cjNum.add(cjList.get(i).學號);
}
for(int i=0;ixsList.size();i++){
// 學生表的學號在成績表里存在
if(cjNum.contains(xsList.get(i).學號)){
覆蓋
}else{
// 學生表的學號在成績表里不存在
在cj表創建添加這個學生
}
}
百度有提供api的,一般是按照api給的網址,在網址后加經緯度或者地區名,但是百度地圖要申請秘鑰的,這個需要自己去申請一個,免費的,類似的功能你可以參考下面的源碼雖然是javascript的,但是java用起來差不多,畢竟你的地圖肯定是在web頁面顯示的
!DOCTYPE?html??
html??
head??
meta?name="viewport"?content="initial-scale=1.0,?user-scalable=no"?/??
meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/??
titleHello,?World/title??
style?type="text/css"??
html{height:100%}??
body{height:100%;margin:0px;padding:0px}??
#container{height:100%}??
/style??
script?type="text/javascript"?src=";ak=您的密鑰"
//v2.0版本的引用方式:src=";ak=您的密鑰"
//v1.4版本及以前版本的引用方式:src=";key=您的密鑰callback=initialize"
/script
/head??
body??
div?id="container"/div?
script?type="text/javascript"?
var?map?=?new?BMap.Map("container");??????????//?創建地圖實例??
var?point?=?new?BMap.Point(116.404,?39.915);??//?創建點坐標??
map.centerAndZoom(point,?15);?????????????????//?初始化地圖,設置中心點坐標和地圖級別??
/script??
/body??
/html
用java寫一個地圖編輯器
記得媒體在采訪c++之父的時候,他說作為程序員,要相信自己能夠解決已經理解的任何事情.
換句話說:您可以解決任何問題,只要想得明白
現實問題:開發一個基于地磚的二維游戲的地圖編輯器,要求生成兩個binary文件,各包含一個二維數組,*.map存放地磚,花花草草什么的.*.item放道具,比如某個點可能會觸發一個事件.很簡單,隨便寫.看到這里您已經大致明白程序的整體結構.
計算機語言:java.
要理解事件必須分析
初步來看,地圖編輯器:生成某種形式的若干數組,無論是哪種形式的數組,你的目的:
生成數組.地圖是實際是一個(x,y)的二維坐標系,這很容易讓人聯系到:亦無論
我準備把設置兩個程序界面(主界面/map界面),java的布局管理器不好擺弄,不如分開兩個class,主界面用jbuilder自動創建的application模塊(帶菜單).map界面自己寫,也是jframe,類之間相互傳遞消息,map界面將在程序開始時被初始化,也可以在程序從主界面中初始化(有問題)
構建程序
以下內容為程序代碼:
basepanel.setlayout(new gridlayout(5, 5));
for (byte i = 0; i 9; i++) {
basemapbutton[i] = new
((icon) pic.getimageicon(i, 0));
basemapbutton[i].setbuttontitle(i);
basemapbutton[i].addactionlistener(buttonlistener);
basepanel.add(basemapbutton[i]);
}
itempanel.setlayout(new gridlayout(5, 5));
for (byte i = 0; i 3; i++) {
itemmapbutton[i] = new mapbutton((icon) pic.getimageicon(i, 1));
itemmapbutton[i].setbuttontitle(i);
itemmapbutton[i].addactionlistener(buttonlistener1);
itempanel.add(itemmapbutton[i]);
}
tabbedpane.addtab("bases", basepanel);
tabbedpane.addtab("items", itempanel);
contentpane.add(tabbedpane, borderlayout.center);
有兩個地方要解釋:
mapbutton:自己寫的一個類
以下內容為程序代碼:
import javax.swing.icon;
import javax.swing.jbutton;
public class mapbutton extends jbutton {
public mapbutton() {
super();
}
public mapbutton(string arg0) {
super(arg0);
}
public mapbutton(action arg0) {
super(arg0);
}
public mapbutton(icon arg0) {
super(arg0);
}
public mapbutton(string arg0, icon arg1) {
super(arg0, arg1);
}
public byte width, height;
//public pic_w, pic_y;
public void setbuttontitle(byte w, byte h) {
width = w;
height = h;
}
public void setbuttontitle(byte w){
width =w;
}
public byte getbuttonwidth() {
return width;
}
public byte getbuttonheight() {
return height;
}
}
pic:自己寫的mappic類的intance:
以下內容為程序代碼:
package com.nenghe.mapeditor;
import javax.swing.imageicon;
public class mappic {
imageicon[] baseimages;
imageicon[] itemimages;
imageicon image1;
public mappic() {
init();
}
public void init() {
baseimages = new imageicon[9];
baseimages[0] = new imageicon(mappic.class.getresource("m1.png"/images/wink.gif[/img]);
baseimages[1] = new imageicon(mappic.class.getresource("m2.png"/images/wink.gif[/img]);
baseimages[2] = new imageicon(mappic.class.getresource("m3.png"/images/wink.gif[/img]);
baseimages[3] = new imageicon(mappic.class.getresource("m4.png"/images/wink.gif[/img]);
baseimages[4] = new imageicon(mappic.class.getresource("m5.png"/images/wink.gif[/img]);
baseimages[5] = new imageicon(mappic.class.getresource("m6.png"/images/wink.gif[/img]);
baseimages[6] = new imageicon(mappic.class.getresource("m7.png"/images/wink.gif[/img]);
baseimages[7] = new imageicon(mappic.class.getresource("m8.png"/images/wink.gif[/img]);
baseimages[8] = new imageicon(mappic.class.getresource("m9.png"/images/wink.gif[/img]);
itemimages = new imageicon[3];
itemimages[0] = new imageicon(mappic.class.getresource("error.png"/images/wink.gif[/img]);
itemimages[1] = new imageicon(mappic.class.getresource("i1.png"/images/wink.gif[/img]);
itemimages[2] = new imageicon(mappic.class.getresource("i2.png"/images/wink.gif[/img]);
}
public imageicon getimageicon(int x, int flags) {
if (flags == 0) {
return baseimages[x];
} else if (flags == 1) {
return itemimages[x];
}
return null;
}
}
寫mapbutton在于處理事件的時候可以準確的獲得按鈕的坐標,忘了說了,map界面中我是用按鈕代替地圖方格的.這是很容易想到的,最笨也是最省力的辦法
pic單獨寫好改,什么時候內容改變了,很容易改,硬要合寫沒有也隨便.
下面就是事件了
有兩個事件要處理,第一個是按鈕事件,第二個菜單事件
按鈕事件我套用這樣的結構
以下內容為程序代碼:
actionlistener buttonlistener = new actionlistener() {
public void actionperformed(actionevent e) {
//system.out.println(e.tostring());
mapbutton pressedbutton = (mapbutton) e.getsource();
mapdraw.temp_x = pressedbutton.getbuttonwidth();
mapdraw.temp_y = 0;
//system.out.println(mapdraw.temp_x+" "+mapdraw.temp_y);
}
};
....
basemapbutton[i].addactionlistener(buttonlistener);
jbuilder中把按鈕事件事件單獨生成一個類,我不明白,看不懂.真的很高深.
菜單事件模型jbuilder自己加的.overwrite
以下內容為程序代碼:
public void *_actionperformed(actionevent e) {...}
用兩個中間值從主界面向map界面傳遞按了什么:
這里是map界面中的按鈕的事件處理程序
以下內容為程序代碼:
actionlistener buttonlistener = new actionlistener() {
public void actionperformed(actionevent e) {
mapbutton pressedbutton = (mapbutton) e.getsource();
pressedwidth = pressedbutton.getbuttonwidth();
pressedheight = pressedbutton.getbuttonheight();
if (temp_y == 0) {
if (item[pressedwidth][pressedheight] != 0) {
item[pressedwidth][pressedheight] = 0;
jfm.showmessage("這里的道具已被置空!\nthe item has been null!"/images/wink.gif[/img];
}
map[pressedwidth][pressedheight] = temp_x;
pressedbutton.seticon((icon) pic.getimageicon(temp_x,
temp_y));
} else {
if (map[pressedwidth][pressedheight] == 0) {
jfm.showmessage("道具不能放在這!\nnot put item at this point!"/images/wink.gif[/img];
} else {
if (temp_x == 0) {
byte value = map[pressedwidth][pressedheight];
item[pressedwidth][pressedheight] = 0;
pressedbutton.seticon((icon) pic.getimageicon(
value, 0));
} else {
pressedbutton.seticon((icon) pic.getimageicon(
temp_x, temp_y));
item[pressedwidth][pressedheight] = temp_x;
}
}
}
}
};
請問兩個中間值是什么呢?一目了然哦
最后是生成map
以下內容為程序代碼:
public void createmap() throws ioexception {
try {
dataoutputstream mapbinaryfile = new dataoutputstream(
new fileoutputstream(mapeditor.filename + "map"/images/wink.gif[/img]);
dataoutputstream itembinaryfile = new dataoutputstream(
new fileoutputstream(mapeditor.filename + "item"/images/wink.gif[/img]);
mapbinaryfile.writebyte(width);
mapbinaryfile.writebyte(height);
for (byte i = 0; i height; i++)
for (byte j = 0; j width; j++) {
//system.out.println(i+" "+j);
byte mapvalue = map[i][j];
byte itemvalue = item[i][j];
if (mapvalue != 0) {
system.out.println(i+" "+j+" "+ mapvalue);
mapbinaryfile.writebyte(j);
mapbinaryfile.writebyte(i);
mapbinaryfile.writebyte(mapvalue);
}
if (itemvalue != 0) {
itembinaryfile.writebyte(j);//x
itembinaryfile.writebyte(i);//y
itembinaryfile.writebyte(itemvalue);
}
}
mapbinaryfile.close();
itembinaryfile.close();
} catch (eofexception e) {
system.err.println("error"/images/wink.gif[/img];
}
}
本文名稱:java代碼寫在哪兒,java代碼存在哪里
網站URL:http://m.kartarina.com/article30/heidso.html
成都網站建設公司_創新互聯,為您提供動態網站、手機網站建設、搜索引擎優化、移動網站建設、小程序開發、定制開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯