[英]AWT ActionListener as abstract class
我有一個帶有AWT GUI的Java程序。 我的問題是此程序中有很多抽象類(ActionListener)。 在這個抽象類中,我需要從主類中調用屬性。 因此,目前我必須將所有需要的屬性設置為final。 不好 我的問題是如何從主類調用屬性(未將此屬性設置為final)。 什么是更好的代碼風格?
例如:
public class mainClass {
TextField field1 = new TextField(10);
(...)
Button connect = new Button("Connecting...");
(...)
connect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ex) {
methodFromTheMainClass(field1.getText());
// How can I call the method methodFromTheMainClass?
}
});
private void methodFromTheMainClass(String fieldContent) {
(...)
}
}
感謝您的幫助,對不起我的英語。 : - /
final
關鍵字幾乎可以在任何可以使用的地方都是一個很好的解決方案。在您的情況下,使用final
關鍵字完全可以。
但是,如果您強烈希望使字段不是final
字段(或由於您的業務邏輯需求),則只需創建一個內部(非靜態)類即可,該類包含從本地抽象類訪問的所有字段。
這是一個例子:
public class YourClass {
private class Container {
private TextField field = new TextField();
private Button connectButton = new Button("Connecting...");
}
private final Container container = new Container();
private void establishConnection() {
container.connectButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// connection code here
container.field.setText("Connection established"); // access to an inner class
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.