java中enableEvents的用法

来源:百度知道 编辑:UC知道 时间:2024/07/02 20:59:35
如题,
class enterdialog extends JDialog
{
JButton login=new JButton("登陆");
public enterdialog()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);//可以
login.enableEvents(AWTEvent.MOUSE_EVENT_MASK);//报错
}
public void processWindowEvent(WindowEvent e){}
public void processMouseEvent(WindowEvent e){}
}
大概意思就是这样。我就是想问为什么第一个enableEvents可以用,而第二个按键想调用这个方法却不可以用,按道理说按键不是也继承于component吗?为什么到按键这就说不可以呢?

恩,我给你说一下,enableEvents()是protected final类型的。在不同包中,只有在子类中才可以访问protected final类型的成员和方法

在你这个程序里enterdialog 继承了JDialog,而JDialog又继承了component,
所以你可以写 enableEvents(AWTEvent.WINDOW_EVENT_MASK);其实也就相当于 this。enableEvents(AWTEvent.WINDOW_EVENT_MASK)或者
enterdialog的对象。enableEvents()

如果你要想JButton的对象可以调用enableEvents()方法,你不能用它本身的对象去调用,应该也是class enterdialog extends JButton{}
然后用enterdialog的对象去调。

或者是,举个例子,这样也可以。
class JButton extends Component{
JButton jb = new JButton();
public void fun(){
jb.enableEvents(AWTEvent.MOUSE_EVENT_MASK);
}
}

protected final void enableEvents(long eventsToEnable)

Enables the events defined by the specified event mask
parameter to be delivered to this component.
Event types are automatically enabled when a listener for that event type is
added to the component.
This method only needs to be invoked by subclasses of Component
which desire to have th