| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2737 人关注过本帖
标题:关于按钮交互的问题。
只看楼主 加入收藏
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

是啊,但是如果你用了这些不标准的类的话,就要自己排错了
我如果把你的代码放到我的电脑上,连编译都通过不了的
因为我没有那些包,所以你帖上来的代码帖了和没帖是一样的,因为我们不能测试


可惜不是你,陪我到最后
2006-06-30 16:44
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
要不,你就直接把你的错误信息帖出来

可惜不是你,陪我到最后
2006-06-30 16:44
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 
没有错误,只是没有达到我要的效果。

怎么上传文件啊,我把那个包给你。16.6M是不是太大了?
或者你有没有大点的邮箱,我给你发。

我已经改来改去一天了,还没有改对,感谢你能一直关注我的问题。
2006-06-30 17:04
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
那我也可能也帮不了你了
因为那个包我也没听过,
最好的办法就是去看这个包的API,然后把它弄熟来

可惜不是你,陪我到最后
2006-06-30 18:04
水影月圆
Rank: 4
等 级:贵宾
威 望:11
帖 子:738
专家分:0
注 册:2005-8-2
收藏
得分:0 
你说了 你的事件监听这里还不对 那你就重点看你的监听事件啊 我这有eclipse 在网上搜了半天没找到你说的插件
还有eclipse3.11有自带的汉化API 你可以看看嘛 那个很详细的

子非鱼,安知鱼之江湖?子非我,安知我之功夫 http://20681.
2006-06-30 18:13
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 

我的问题是点击button后,再点击canvas,button不同,canvas却是同一个,不同的button告诉canvas执行不同的任务. 第一次点击button再点击canvas执行任务是没有错误的;当后续点击button,再执行任务时,前面的任务也会执行,因为各个button给的任务都是监听同一个canvas,问题就在这里.

2006-07-01 09:30
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 

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();
}
}
我把程序简化了,要做的事情类似于这样的,看看应该怎么改?谢谢!

2006-07-01 09:48
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你的程序虽然看上去可以运行,但是还有些地方要改
一,现在做界面,为了达到最好的效果和平台一致的外观,建议用javax.swing 包里的类来构建你的界面
二,类的命名不能像你这样随意命名,aa,是什么意思,如果哪一天你要写很多类,每一个类都像你这样命名,aa,bb,c等等,那么你的类你自己都不记得,还有,类名的首字母最好是大写,你遵守了规范写的代码,大家都很容易看懂,自己也容易看懂,何乐而不为呢.

可惜不是你,陪我到最后
2006-07-01 10:06
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 

我的程序名在是暂时给的,只是想让你帮我看一下问题的临时代码。这个程序有问题的,点了button以后就会出错。

2006-07-01 10:27
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
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呢,
要学会自己根据异常信息排除错误

可惜不是你,陪我到最后
2006-07-01 10:35
快速回复:关于按钮交互的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035378 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved