因此,通常我是C,C++和C#程序员,在C#WPF中拥有大部分GUI经验。我已经被安置在一个使用Java的项目上,并且我发现我的词汇表对于C#而言并不能很好地与Java混合使用。Java操作说明
一个问题我已经遇到涉及Jbutton将,想必已经被称为在C#“代表”什么。从这个example有这段代码:
jbnButton1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jtfInput.setText("Button 1!");
}
});
简单地说,这是什么所谓的,其中一个函数定义为一个参数(或作为参数传递)?另外,这是最佳做法吗?在我所开发的项目中,Initialize()函数充满了像按钮,复选框等这样的函数,这使得它变得非常不易操作。我更喜欢在类级别定义,而不是在Initialize()中。
这让我想起另一个example(上面的代码示例)。与这些代码行:
b1.addActionListener(this);
b3.addActionListener(this);
...
}
public void actionPerformed(ActionEvent e) {
if ("disable".equals(e.getActionCommand())) {
b2.setEnabled(false);
b1.setEnabled(false);
b3.setEnabled(true);
} else {
b2.setEnabled(true);
b1.setEnabled(true);
b3.setEnabled(false);
}
}
实质上,代码分配为按钮一次,b1和按钮3的动作,b 3分配给相同的事件处理程序,这是在我更喜欢的范围限定(外部的,其中按钮正在初始化)。有没有办法让它们指向不同的功能?另外,通过调用
.addActionListener(this);
编译器如何计算出在此使用actionPerformed(ActionEvent e)?是预先定义的行动将解决'actionPerformed(ActionEvent e)'?
:这是当前类,它必须实现ActionListener接口。编译器不会“找出”使用actionPerformed。相反,addActionListener要求参数实现ActionListener接口,其中包含actionPerformed()方法。使用ActionEvent.getSource()来确定是否单击了b1或b3,然后从actionPerformed方法调用适当的方法。 – DwB