| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2737 人关注过本帖
标题:关于按钮交互的问题。
只看楼主 加入收藏
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 

aa改好了,谢谢!
现在还要回到我原来的程序了,希望适用!

非常感谢千里冰封!

2006-07-01 10:56
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
解决了就好

可惜不是你,陪我到最后
2006-07-01 10:58
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.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class aa implements ActionListener,MouseListener{
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(this);
}
if(e.getSource()==bt1)
{
tool="reset";
canvas.addMouseListener(this);
}
if(e.getSource()==bt2)
{
tool="big";
canvas.addMouseListener(this);
}
if(e.getSource()==bt3)
{
tool="small";
canvas.addMouseListener(this);
}
}

public void mouseClicked(MouseEvent event) {
if(tool=="reset")
{
label.setText(tool);
System.out.println(tool);
canvas.removeMouseListener(this);
}
if(tool=="big")
{
label.setText(tool);
System.out.println(tool);
canvas.removeMouseListener(this);
}

if(tool=="small")
{
label.setText(tool);
System.out.println(tool);
canvas.removeMouseListener(this);
}
if(tool=="pan")
{
label.setText(tool);
System.out.println(tool);
canvas.removeMouseListener(this);
}
}
public static void main(String[] args) {
new aa();
}
public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}
}
又有新问题了,如果点击同一个button多次,再点击canvas,就会有多次输出,怎么判断点击的是同一个button?

2006-07-01 11:40
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你这是点了一次按钮就加一次事件处理函数,这样当然不好
你在处理按钮事件的时候,判断是一样,是否这个按钮已经按过了,不就可以了吗?

可惜不是你,陪我到最后
2006-07-01 11:53
水影月圆
Rank: 4
等 级:贵宾
威 望:11
帖 子:738
专家分:0
注 册:2005-8-2
收藏
得分:0 

你用适配器写 更方便 不用把每个接口都给写出来


子非鱼,安知鱼之江湖?子非我,安知我之功夫 http://20681.
2006-07-01 12:00
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 
有没有判断按钮是否按下的方法?isPressed()方法不对呀!!
2006-07-01 12:18
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
不是是否按下,而是是否已经按过了
你可以调一个变量,它用于保存按过哪个按钮
当产生按钮事件时,先查询是否这个键被按过,如果没有就可以添加事件了
如果有,那就什么也不要做
这样不是很好吗?

可惜不是你,陪我到最后
2006-07-01 12:48
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 
要保存的只能是当前按过的按钮,不能把所有按过的按钮都记录。连续按下的按钮任务不能重复执行的。

你能不能帮忙把这个程序该一下,谢谢了。我现在头都大了
2006-07-01 13:15
mxr
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-4-27
收藏
得分:0 
我用了4个变量来记录4个按钮的状态,是不是很麻烦?如果用一个变量可以实现么?
2006-07-01 13:22
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
如果你的程序允许四个状态共存的时候,就设四个变量
否则一个就够了,

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



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

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