我刚刚开始关注Java本身和Java,我在理解"Action“概念时遇到了一些问题。人们说C#和Java非常相似,但这是另一回事,当你尝试它们并进行比较的时候。
我有以下自动生成的按钮动作侦听器:
btnNewButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
lblNylabel.setText("New label text");
}
});我是这样理解的:
btnNewButton.addActionListener()
是否有可能以一种更理解/更简单的方式来帮助我理解ActionListener的概念?
发布于 2012-04-25 07:19:28
我不明白的是,我无法亲自实例化ActionListener类,但它可以作为方法调用??中的参数。
当你做的时候
new ActionListener() {
public void actionPerformed(ActionEvent e) {
lblNylabel.setText("New label text");
}
}实际上,您正在创建一个anonymous subclass of ActionListener的实例。
它在语义上等同于做
class AnonymousActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
lblNylabel.setText("New label text");
}
}
btnNewButton.addActionListener(new AnonymousActionListener());(还有tada,作为奖励,您刚刚了解到您可以在Java中使用 ;-)
以下是几种常见的选择:
类MyActionListener实现ActionListener {公共空actionPerformed(ActionEvent e) {lblNylabel.setText(“新标签文本”);}类YourClass {公共空yourMethod() {.BtnNewButton.addActionListener(新MyActionListener());}
(只有当另一个类能够像上面那样访问所需的variables.)
类YourClass {公共yourMethod() {.btnNewButton.addActionListener(new MyActionListener());} //内部类MyActionListener实现ActionListener { public void actionPerformed(ActionEvent e) {lblNylabel.setText(“新标签文本”);}}
(在这里,lblNylabel可能是内部类的作用域。)
this,并使用this作为addActionListener的参数:类YourClass实现ActionListener {公共空yourMethod() {.btnNewButton.addActionListener(this);}公共无效actionPerformed(ActionEvent e) {lblNylabel.setText(“新标签文本”);}
https://stackoverflow.com/questions/10311014
复制相似问题