成都网站建设设计

将想法与焦点和您一起共享

关于java匿名类监听器代码的信息

关于java的监听器

1、public void addWindowListener(WindowListener l)添加指定的窗口侦听器,以从此窗口接收窗口事件。如果 l 为 null,则不抛出任何异常,且不执行任何操作。

我们提供的服务有:做网站、网站设计、微信公众号开发、网站优化、网站认证、崇明ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的崇明网站制作公司

这个是API中的方法定义,此方法参数为接口WindowListener,任何实现该接口的类都可以作为参数。

2、public abstract class WindowAdapter implements WindowListener, WindowStateListener, WindowFocusListener

接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。

扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现

WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为

null,所以只需针对关心的事件定义方法。)

使用扩展的类可以创建侦听器对象,然后使用窗口的 addWindowListener

方法向该窗口注册侦听器。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将

WindowEvent 传递给该方法。

3、如果我想在代码中一次性使用某个类(抽象类或具体类)或接口,可以使用匿名类的方式,这样不需自己定义一个My***类,然后再使用,比较方便。用法就是直接在new WindowAdapter()后面加入类定义,在其中实现或覆盖方法就可以了。

匿名类不是返回值,而是相当于new String(“hello”)这种的扩展形式。我觉得匿名类的最多用处就是加监听器时。

附上WindowAdapter源代码:

public abstract class WindowAdapter

implements WindowListener, WindowStateListener, WindowFocusListener

{

public void windowOpened(WindowEvent e) {}

public void windowClosing(WindowEvent e) {}

public void windowClosed(WindowEvent e) {}

public void windowIconified(WindowEvent e) {}

public void windowDeiconified(WindowEvent e) {}

public void windowActivated(WindowEvent e) {}

public void windowDeactivated(WindowEvent e) {}

public void windowStateChanged(WindowEvent e) {}

public void windowGainedFocus(WindowEvent e) {}

public void windowLostFocus(WindowEvent e) {}

}

java窗体程序 1、Label.LEFT无效,求方法并解答原因 2、采用匿名类和内部类区别 3、JLabel和Label区别

一个一个来吧。

第一个问题:

并不是Label.Left无效,而是你API理解错了。由于你之前的代码里面是把Label放在一个Panel里面,Panel又放在了JFrame里面。而JFrame默认的布局管理器是BorderLayout,而你放入Panel时没有指定放入位置,被默认放在了JFrame的Center位。所以Panel里面的控件都跟着跑到窗口的中间了,这时候你调用Label.Left只是把Label放在了Panel的最左边(不写这个也是如此),而Panel在JFrame的中间,所以,显示效果是居中效果。

如果你希望Label到窗口的最左边,只需要修改一句就可以了:

f.add(p, BorderLayout.WEST); // 将面板p加入到窗口f中

第二个问题:

从功能上说,两者实现的内容一样,不过记住,匿名类里面调用外部变量需要将变量设置为final。内部类本身也是一个类,需要一连串的定义,所以在监控事件特别多的时候,就会导致代码严重冗余,增加维护成本。而匿名类定义监听事件可以和控件写在一起,同时不需要类定义,可以使代码维护起来更容易一些。因此,一般情况下,我们都会使用匿名类来监听事件。

第三个问题:

Label属于AWT的范畴,JLabel和其他以J开头的控件都属于Swing。后者属于前者的扩展,同时也自成一家。AWT对系统依赖较高,不太适合跨平台;Swing所有控件均是运行库自带,与平台无关,运行在哪个系统上都是一个效果(PS:一样的丑),所以适合跨平台。

JAVA同一类中,两个监听器的使用。

我建议你才用两种方式中的一种。

第一种:

decreNo.addActionListener(new ActionListener(){

这里是你的响应代码

});

这是匿名内部类的方式

第二种:

最外面的类实现actionListener:

class AndroidApp extends Context implements ActionListener

{

JButton increNo = new JButton("Count up");

JButton decreNo = new JButton("Count down");

increNo.addActionListener(new increNoListener());

decreNo.addActionListener(new decreNoListener());

@override

public void actionPerformed(ActionEvent e)

{

//具体代码

//这里两个按钮的响应函数可以都写在这里,用传入的e来判断

}

}

如何写一个java监听器 监听某个java类的方法是否被执行?

你直接写一个方法A,在你要监听的那根类的方法B中调用方法A,这样B每次执行当然就会调用A了。


文章标题:关于java匿名类监听器代码的信息
标题URL:http://chengdu.cdxwcx.cn/article/hgojcg.html