关于用APPLET做地图的,大家一定看看帮忙!

socoolyuanyuan 2003-10-15 03:33:23
我的问题都是关于制作地图定位的,请大家帮忙:
一,导入一个全国地图,在地图上某地点击鼠标,可以显示该地在全国地图的坐标。我现在可以把这个程序分成两个小程序做:
1导入全国地图,程序如下:
import java.awt.*;
import java.applet.*;
/*
<APPLET
CODE=image.class
WIDTH=500
HEIGHT=500>
</APPLET>
*/
public class image extends Applet{
Image image;
public void init(){
image=getImage(getDocumentBase(),"image.jpg");
}
public void paint(Graphics g)
{
g.drawImage(image,150,150,this);}}
当然这个image.jpg要自己在网上找拉,是个全国地图。
2 在空白页上做出点击鼠标显示坐标的程序,如下:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
/*
<APPLET
CODE=mouse.class
WIDTH=300
HEIGHT=200>
</APPLET>
*/
public class mouse extends Applet implements MouseListener,
MouseMotionListener
{
TextField text1;
public void init()
{
text1=new TextField(30);
add(text1);
addMouseListener(this);
addMouseMotionListener(this);
}
public void mousePressed(MouseEvent e)
{
if((e.getModifiers()&InputEvent.BUTTON1_MASK)==InputEvent.BUTTON1_MASK){
text1.setText("Left mouse button down at"+e.getX()+","+e.getY());
}
else{
text1.setText("Right mouse button down at"+e.getX()+","+e.getY());
}
}
public void mouseClicked(MouseEvent e)
{
text1.setText("You clicked the mouse at"+e.getX()+","+e.getY());
}
public void mouseReleased(MouseEvent e)
{
text1.setText("The mouse button went up.");
}
public void mouseEntered(MouseEvent e)
{
text1.setText("The mouse entered.");
}
public void mouseExited(MouseEvent e)
{
text1.setText("The mouse exited.");
}
public void mouseDragged(MouseEvent e)
{
text1.setText("The mouse was dragged.");
}
public void mouseMoved(MouseEvent e)
{
text1.setText("The mouse was moved.");
}}
但是我不知道怎样把这两个程序结合 ,做出在地图上用鼠标点击可以显示坐标的程序,请大家帮忙看看!
二,已下载的全国地图上北京二字是已经存在的,我怎样使北京二字变成可点击的呢?并且点击之后可以显示另一张地图,即北京市地图?真心希望大家帮忙解答,谢谢!




...全文
78 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
socoolyuanyuan 2003-11-24
  • 打赏
  • 举报
回复
现在又有更详细的了,愿意帮忙的跟帖啊!或者加我的QQ:47554842,有MSN的加socoolyuanyuan@hotmail.com
socoolyuanyuan 2003-11-24
  • 打赏
  • 举报
回复
真的很着急,摆脱各位大哥或者小弟
socoolyuanyuan 2003-10-20
  • 打赏
  • 举报
回复
kinzey34(无声之舞) ,谢谢你啊!有QQ吗或者EMAIL吗?方便我们的联系!
socoolyuanyuan 2003-10-17
  • 打赏
  • 举报
回复
谢谢楼上的,但先声明一下,我不是哥们,而是姐们。以后多多关照。你的 程序我运行了,可以的,但是我要是想把鼠标事件改成把鼠标放在北京二字上就出现坐标,而不是点击后出现坐标,应该怎么改动?我现在需要的是点击后出现另一张地图,请帮忙!
kinzey34 2003-10-17
  • 打赏
  • 举报
回复
比较简单的一种实现办法是先移动鼠标看看“北京”两个字在地图上的坐标范围,比如范围是左上角
180,180,右下角195,190,那么可以更改鼠标点击的监听代码:
原来是:
public void mouseClicked(MouseEvent e)
{
repaint(); //add
text1.setText("You clicked the mouse at"+e.getX()+","+e.getY());
}
改为:
public void mouseClicked(MouseEvent e)
{
int x,y;
x=e.getX();
y=e.getY();
if(180<x && x<195 && 180<y && y<190)
repaint();
text1.setText("You clicked the mouse at"+e.getX()+","+e.getY());
}

不过这样要切换回原来的图片就还要在原位置点,也许做一个“北京”按钮上去(在图片外的位置)好点,我不知你想怎样实现图片的切换
不用客气啊,我也是初学者,我们是在讨论

asunew 2003-10-17
  • 打赏
  • 举报
回复
以上都没解决如何把多个类同时应用与网页,我给大家介绍一种方法:
1、把网页所需的所有类压缩成jar文件,如:myClasses.jar;怎么压缩,jsdk自带有jar.exe工具,就象java.exe,javac.exe一样;
2、修改以下html文件:
<APPLET
CODE=mouse.class archive=myClasses.jar
WIDTH=300
HEIGHT=200>
</APPLET>

socoolyuanyuan 2003-10-17
  • 打赏
  • 举报
回复
调试成功!可是要是只有点击北京二字才能出现北京地图啊,而你的修改是在全国地图的任何位置点击鼠标都会出现北京地图,怎样才能使北京二字可点击切点击后出现的是北京地图呢?是不是用到了SWING中的分层?具体应怎样呢?谢谢你对我的关照!
kinzey34 2003-10-17
  • 打赏
  • 举报
回复
偷偷调试完了,现在可以在鼠标点击后换图片,再点又切换回原来图片,程序Mouse.java改为:
(先把另张图改名为image2.jpg,和image.jpg放在一起)
(增加的代码我用//add做了注释,修改的代码我用//modified做了注释)

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
/*
<APPLET
CODE=mouse.class
WIDTH=300
HEIGHT=200>
</APPLET>
*/
public class Mouse extends Applet implements MouseListener,
MouseMotionListener
{
int flag=1; //add
Image image,image2; //modified
TextField text1;
public void init()
{
text1=new TextField(30);
add(text1);
addMouseListener(this);
addMouseMotionListener(this);

image=getImage(getDocumentBase(),"image.jpg");
image2=getImage(getDocumentBase(),"image2.jpg"); //add
}

public void paint(Graphics g)
{
if(flag==1) //add
{ //add
g.drawImage(image,150,150,this);
flag=2; //add
} //add
else //add
{ //add
g.drawImage(image2,150,150,this); //add
flag=1; //add
}
}

public void mousePressed(MouseEvent e)
{
if((e.getModifiers()&InputEvent.BUTTON1_MASK)==InputEvent.BUTTON1_MASK){
text1.setText("Left mouse button down at"+e.getX()+","+e.getY());
}
else{
text1.setText("Right mouse button down at"+e.getX()+","+e.getY());
}
}
public void mouseClicked(MouseEvent e)
{
repaint(); //add
text1.setText("You clicked the mouse at"+e.getX()+","+e.getY());
}
public void mouseReleased(MouseEvent e)
{
text1.setText("The mouse button went up.");
}
public void mouseEntered(MouseEvent e)
{
text1.setText("The mouse entered.");
}
public void mouseExited(MouseEvent e)
{
text1.setText("The mouse exited.");
}
public void mouseDragged(MouseEvent e)
{
text1.setText("The mouse was dragged.");
}
public void mouseMoved(MouseEvent e)
{
text1.setText("You moved the mouse at"+e.getX()+","+e.getY());//modified
}

}

你试试看,如果有时候点了一下不切换图,那可能是监听的鼠标事件太多造成混乱,还有就是如果你要显示更多的图,程序再更改也比较容易

socoolyuanyuan 2003-10-17
  • 打赏
  • 举报
回复
太感谢了!下星期来了,但愿能看到你的回复,我的QQ3907085,邮箱:socoolyuanyuan@yahoo.com.cn
kinzey34 2003-10-17
  • 打赏
  • 举报
回复
我又稍微改了一下Mouse.java,改为只要鼠标在地图上移动(不仅是移动到北京)就显示坐标,具体是改动了程序的倒数第3行,让鼠标的移动事件显示坐标

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
/*
<APPLET
CODE=mouse.class
WIDTH=300
HEIGHT=200>
</APPLET>
*/
public class Mouse extends Applet implements MouseListener,
MouseMotionListener
{
Image image;
TextField text1;
public void init()
{
text1=new TextField(30);
add(text1);
addMouseListener(this);
addMouseMotionListener(this);

image=getImage(getDocumentBase(),"image.jpg");
}

public void paint(Graphics g)
{
g.drawImage(image,150,150,this);
}

public void mousePressed(MouseEvent e)
{
if((e.getModifiers()&InputEvent.BUTTON1_MASK)==InputEvent.BUTTON1_MASK){
text1.setText("Left mouse button down at"+e.getX()+","+e.getY());
}
else{
text1.setText("Right mouse button down at"+e.getX()+","+e.getY());
}
}
public void mouseClicked(MouseEvent e)
{
text1.setText("You clicked the mouse at"+e.getX()+","+e.getY());
}
public void mouseReleased(MouseEvent e)
{
text1.setText("The mouse button went up.");
}
public void mouseEntered(MouseEvent e)
{
text1.setText("The mouse entered.");
}
public void mouseExited(MouseEvent e)
{
text1.setText("The mouse exited.");
}
public void mouseDragged(MouseEvent e)
{
text1.setText("The mouse was dragged.");
}
public void mouseMoved(MouseEvent e)
{
//我改动了下面这行
text1.setText("You moved the mouse at"+e.getX()+","+e.getY());
}
}

关于点击鼠标出另张图我抽时间调一下(现在我在上班),争取早点给你
可能比我小吧,暂算做小妹
socoolyuanyuan 2003-10-16
  • 打赏
  • 举报
回复
运行后编译可以通过,但是输入appletviewer Mouse.java后,说加载错误,找不到image.class,为什么呢?
socoolyuanyuan 2003-10-16
  • 打赏
  • 举报
回复
我现在改成了这样,可是一个程序里不能包含两个类名啊,我现在分别有Mouse.class和image.class,应该怎么修改啊?

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

/*
<APPLET
CODE=Mouse.class
WIDTH=300
HEIGHT=200>
*/
/*
<APPLET
CODE=image.class
WIDTH=500
HEIGHT=500>
</APPLET>
*/
public class Mouse extends Applet implements MouseListener,
MouseMotionListener
{
Image image;
TextField text1;

public void init()
{
text1=new TextField(30);
add(text1);
addMouseListener(this);
addMouseMotionListener(this);

image=getImage(getDocumentBase(),"image.jpg");
}

public void paint(Graphics g)
{
g.drawImage(image,150,150,this);
}

public void mousePressed(MouseEvent e)
{
if((e.getModifiers()&InputEvent.BUTTON1_MASK)==InputEvent.BUTTON1_MASK)
{
text1.setText("Left mouse button down at"+e.getX()+","+e.getY());
}
else
{
text1.setText("Right mouse button down at"+e.getX()+","+e.getY());
}
}

public void mouseClicked(MouseEvent e)
{
text1.setText("You clicked the mouse at"+e.getX()+","+e.getY());
}

public void mouseReleased(MouseEvent e)
{
text1.setText("The mouse button went up.");
}

public void mouseEntered(MouseEvent e)
{
text1.setText("The mouse entered.");
}

public void mouseExited(MouseEvent e)
{
text1.setText("The mouse exited.");
}

public void mouseDragged(MouseEvent e)
{
text1.setText("The mouse was dragged.");
}

public void mouseMoved(MouseEvent e)
{
text1.setText("The mouse was moved.");
}
}
kinzey34 2003-10-16
  • 打赏
  • 举报
回复
哥们,现在严格照我的步骤去做:
一 将我前面帖子的代码保存为Mouse.java并编译
二 建立一个文件: map.html
里面内容是:
<html>
<head>
<title>MyMap</title>
</head>
<body>

<applet
code="Mouse.class"
width=300
height=300
>
</applet>
</body>
</html>

里面的值300你可以自己修改为合适大小
三 在命令行执行
appletviewer map.html
或者直接在资源管理器中双击此map.html
应该就可以了

要注意把Mouse.java、map.html、image.jpg放在同一个文件夹或目录中
socoolyuanyuan 2003-10-16
  • 打赏
  • 举报
回复
晚上的朋友帮忙啊
socoolyuanyuan 2003-10-16
  • 打赏
  • 举报
回复
只有自己顶了!
zhuangzhou 2003-10-16
  • 打赏
  • 举报
回复
水平实在有限啊!
socoolyuanyuan 2003-10-16
  • 打赏
  • 举报
回复
各位大虾可以帮我修改一下吗?
yixiaojiao 2003-10-15
  • 打赏
  • 举报
回复
up
liberpike 2003-10-15
  • 打赏
  • 举报
回复
帮顶
kinzey34 2003-10-15
  • 打赏
  • 举报
回复
我刚才试验了一下,可以结合两部分的功能,你只需要修改mouse类的内容,在其中增加些显示地图的代码,然后浏览调用mouse的html就可以了
具体增加如下:

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

/*
<APPLET
CODE=Mouse.class
WIDTH=300 //修改为适应图片大小
HEIGHT=200> //修改为适应图片大小
</APPLET>
*/

public class Mouse extends Applet implements MouseListener,
MouseMotionListener
{
Image image; //参照你的代码增加
TextField text1;

public void init()
{
text1=new TextField(30);
add(text1);
addMouseListener(this);
addMouseMotionListener(this);

image=getImage(getDocumentBase(),"image.jpg"); //参照你的代码增加
}

public void paint(Graphics g) //参照你的代码增加
{ //参照你的代码增加
g.drawImage(image,150,150,this); //参照你的代码增加
} //参照你的代码增加

public void mousePressed(MouseEvent e)
{
if((e.getModifiers()&InputEvent.BUTTON1_MASK)==InputEvent.BUTTON1_MASK)
{
text1.setText("Left mouse button down at"+e.getX()+","+e.getY());
}
else
{
text1.setText("Right mouse button down at"+e.getX()+","+e.getY());
}
}

public void mouseClicked(MouseEvent e)
{
text1.setText("You clicked the mouse at"+e.getX()+","+e.getY());
}

public void mouseReleased(MouseEvent e)
{
text1.setText("The mouse button went up.");
}

public void mouseEntered(MouseEvent e)
{
text1.setText("The mouse entered.");
}

public void mouseExited(MouseEvent e)
{
text1.setText("The mouse exited.");
}

public void mouseDragged(MouseEvent e)
{
text1.setText("The mouse was dragged.");
}

public void mouseMoved(MouseEvent e)
{
text1.setText("The mouse was moved.");
}
}

给你两点建议:
1.请你最好将类名的第一个字母大写:Mouse,这是JAVA默认的规则;
2.请尽量起名时不要和JAVA里的类名一样,比如image,大写为Image,这样容易出问题(比如在
编译时)


第二个问题我想肯定有人能帮你解决的
加载更多回复(4)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧