【发布时间】:2013-04-28 13:59:18
【问题描述】:
我的 java 程序已经有一个 Canvas,我计划在该 Canvas 上添加 4 个带有 MouseListener 的组件以充当 4 个按钮。当然 4 个“按钮”会有不同的反应
我可以只为这 4 个组件创建一个类(我不知道该怎么做),还是我必须为 4 个组件定义 4 个类(这更容易)?
【问题讨论】:
标签: java components awt mouselistener
我的 java 程序已经有一个 Canvas,我计划在该 Canvas 上添加 4 个带有 MouseListener 的组件以充当 4 个按钮。当然 4 个“按钮”会有不同的反应
我可以只为这 4 个组件创建一个类(我不知道该怎么做),还是我必须为 4 个组件定义 4 个类(这更容易)?
【问题讨论】:
标签: java components awt mouselistener
MouseEvent 扩展 EventObject 具有 getSource() 方法。
顺便说一句,最好在按钮上添加ActionListener,因为它不仅会响应鼠标,还会响应键盘。
【讨论】:
public class ciCanvas extends Container
{
public void paint()
{
// I draw an image here, it works perfectly
Image MainMenuPlayBtImage =
Toolkit.getDefaultToolkit().getImage(ciConfig.CI_BT1_PATH) ;
Label MainMenuPlayText = new Label(ciConfig.CI_TEXT_PLAYBT) ;
Point MainMenuPlayLocation = new Point(100, 100) ;
ciTitle MainMenuBt = new ciTitle(MainMenuPlayText, MainMenuPlayBtImage, MainMenuPlayLocation) ;
this.add(MainMenuBt) ;
}
}
ciTitle 扩展了 Component,下面 4 行代码旨在为这个 Container 添加一个 Component
我希望这会显示 ciTitle 组件,但没有出现,请注意我还实现了 ciTitle.paint() 方法的代码(见下文)
public void paint(Graphics _GraphicsDev)
{
setSize(
this.ciTitleImage.getWidth(this),
this.ciTitleImage.getHeight(this));
_GraphicsDev.drawImage(
this.ciTitleImage,
this.ciTitleLocation.x,
this.ciTitleLocation.y,
this) ;
}
这里还有一些没有定义的代码,但我希望这些足以描述问题
【讨论】: