java 鼠标事件处理方法_在Java中是否有一种处理鼠标事件的不同选项的标准方法?...

您可以尝试研究类似于策略模式的内容。

基本上,首先单击工具栏上的“房间”按钮。工具栏通过并告诉网格使用“room place”actionListener。可能删除了以前正在侦听的任何操作侦听器

RoomPlaceActionListener将依次实现左/右键单击、拖动等所有有趣的逻辑位。

如果你有多个阶段来建造一个房间(比如,先装门,然后装窗,然后装门);动作监听器将负责把控制权交给下一个阶段:一个有限状态机。

因此,首先单击“房间”按钮,添加“放置房间”侦听器。拖出你想要房间的区域,“PlaceRoom”修改游戏状态,然后将ActionListener更改为“PlaceWindows”侦听器。无限大…直到你完成。

一个非常简单(不可编译)的示例:

class GridPanel extends JPanel

{

void SetMouseListener(MouseListener newListener)

{

for(MouseListener ml : getMouseListeners())

removeMouseListener(ml);

addMouseListener(newListener);

}

}

class ControlPanel extends JPanel

{

GridPanel gameGrid;

void OnRectangleButtonClicked(some stuff)

{

gameGrid.SetMouseListener(new PlaceRoomListener(gameGrid));

}

}

class PlaceRoomListener extends MouseAdapter

{

GridPanel gameGrid;

//constructor, etc

void OnClick(mouse event)

{

gameGrid.doCoolStuff();

gameGrid.SetMouseListener(new PlaceTrapDoorListener());

}

}

//etc

现在,撇开不可编译的例子不谈,火爆的确实有一点:你通常不想把你的游戏模型和图形界面组合成一个单一的类。您希望模型与GUI分离,并通过一个定义良好的接口来操作它。

(另外,可能还有更好的方法来删除鼠标监听器,然后随机删除所有监听器…我有点着急,对不起)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值