簡體   English   中英

AWT ActionListener作為抽象類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM