因此,通常我是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