是啊,但是如果你用了这些不标准的类的话,就要自己排错了
我如果把你的代码放到我的电脑上,连编译都通过不了的
因为我没有那些包,所以你帖上来的代码帖了和没帖是一样的,因为我们不能测试
----------------解决方案--------------------------------------------------------
要不,你就直接把你的错误信息帖出来
----------------解决方案--------------------------------------------------------
没有错误,只是没有达到我要的效果。
怎么上传文件啊,我把那个包给你。16.6M是不是太大了?
或者你有没有大点的邮箱,我给你发。
我已经改来改去一天了,还没有改对,感谢你能一直关注我的问题。
----------------解决方案--------------------------------------------------------
那我也可能也帮不了你了
因为那个包我也没听过,
最好的办法就是去看这个包的API,然后把它弄熟来
----------------解决方案--------------------------------------------------------
你说了 你的事件监听这里还不对 那你就重点看你的监听事件啊 我这有eclipse 在网上搜了半天没找到你说的插件
还有eclipse3.11有自带的汉化API 你可以看看嘛 那个很详细的
----------------解决方案--------------------------------------------------------
我的问题是点击button后,再点击canvas,button不同,canvas却是同一个,不同的button告诉canvas执行不同的任务. 第一次点击button再点击canvas执行任务是没有错误的;当后续点击button,再执行任务时,前面的任务也会执行,因为各个button给的任务都是监听同一个canvas,问题就在这里.
----------------解决方案--------------------------------------------------------
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Button;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class aa implements ActionListener{
Frame fr;
Button bt1,bt2,bt3,bt4;
Panel pn;
Label label;
Canvas canvas;
String attr,tool;
private static final long serialVersionUID = 884142590900760515L;
public aa() {
fr=new Frame("陕西地图");
FlowLayout layout=new FlowLayout(FlowLayout.LEFT);//组件左对齐;
bt1=new Button("复位");
bt1.setCursor(new Cursor(Cursor.HAND_CURSOR));
bt1.addActionListener(this);
bt2=new Button("放大");
bt2.setCursor(new Cursor(Cursor.HAND_CURSOR));
bt2.addActionListener(this);
bt3=new Button("缩小");
bt3.setCursor(new Cursor(Cursor.HAND_CURSOR));
bt3.addActionListener(this);
bt4=new Button("漫游");
bt4.setCursor(new Cursor(Cursor.HAND_CURSOR));
bt4.addActionListener(this);
pn=new Panel();
pn.setLayout(layout);//设置布局管理器;
pn.add(bt1);pn.add(bt2);pn.add(bt3);pn.add(bt4);
pn.setBackground(Color.white.darker());
label=new Label();
label.setBackground(Color.white.darker());
canvas=new Canvas();
fr.add(pn,"North");
fr.add(canvas,"Center");
fr.add(label,"South");
fr.setBounds(50,50,800,680);
fr.setVisible(true);
fr.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bt4)
{
tool="pan";
canvas.addMouseListener((MouseListener) this);
}
if(e.getSource()==bt1)
{
tool="reset";
canvas.removeMouseListener((MouseListener) this);
}
if(e.getSource()==bt2)
{
tool="big";
canvas.addMouseListener((MouseListener) this);
}
if(e.getSource()==bt3)
{
tool="small";
canvas.addMouseListener((MouseListener) this);
}
}
public void mouseClicked(ActionEvent event) {
if(tool=="reset")
{
label.setText(tool);
}
if(tool=="big")
{
label.setText(tool);
}
if(tool=="small")
{
label.setText(tool);
}
if(tool=="pan")
{
label.setText(tool);
}
}
public static void main(String[] args) {
new aa();
}
}
我把程序简化了,要做的事情类似于这样的,看看应该怎么改?谢谢!
----------------解决方案--------------------------------------------------------
你的程序虽然看上去可以运行,但是还有些地方要改
一,现在做界面,为了达到最好的效果和平台一致的外观,建议用javax.swing 包里的类来构建你的界面
二,类的命名不能像你这样随意命名,aa,是什么意思,如果哪一天你要写很多类,每一个类都像你这样命名,aa,bb,c等等,那么你的类你自己都不记得,还有,类名的首字母最好是大写,你遵守了规范写的代码,大家都很容易看懂,自己也容易看懂,何乐而不为呢.
----------------解决方案--------------------------------------------------------
我的程序名在是暂时给的,只是想让你帮我看一下问题的临时代码。这个程序有问题的,点了button以后就会出错。
----------------解决方案--------------------------------------------------------
canvas.removeMouseListener((MouseListener) this);
当然会出错,出错的提示不是有吗?
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: aa
at aa.actionPerformed(aa.java:71)//已经说明了在程序第77行出错了,还不容易找吗?
aa 不能转化成MouseListener,因为aa没有implements它啊,aa只implements ActionListener了,你怎么能把它转化成MouseListener呢,
要学会自己根据异常信息排除错误
----------------解决方案--------------------------------------------------------