簡體   English   中英

如何在另一個類中使用JFrame中的值

[英]How to use the value from a JFrame in another class

我正在使用一個JFrame,該JFrame接受來自用戶的值並將其存儲在變量(filePath)中。 我想在另一個類中使用此值。 我該如何保存JFrame中的值並在另一個類中使用它?

JFrame代碼:

JFileChooser fileChooser = new JFileChooser();
        fileChooser.setDialogTitle("Specify a file to save");

        int userSelection = fileChooser.showSaveDialog(this);
        if (userSelection == JFileChooser.APPROVE_OPTION) {
            File fileToSave = fileChooser.getSelectedFile();
            String filePath = fileToSave.getAbsolutePath();
        }

班級代碼:

String filename="";

我想將filePath值轉換為文件名字符串。

有什么幫助嗎?

您可以在要保存該值的類中創建一個靜態方法。 例如。

class Get {

    static String filename;

    public static void getValue(String value) {
        filename = value;
    }
}

然后,一旦您從中獲取文件路徑。

String filePath = fileToSave.getAbsolutePath();

之后,調用另一個類的靜態方法。 例如,在我的情況下,該類是Get。

Get.getValue(filePath);

或Crete獲取字符串值的類的構造函數。

class Get {

        String filename;

        Get(String value) {
            filename = value;
        }
    }
}

在創建類的對象時,將該值發送到構造函數。

Get g = new Get(filePath);

甚至更簡單。 在jframe類中的holder類中引入一個靜態變量,將其值設置為filepath。

類Get {

    static String filename;

}

然后只需將文件名的值設置為filePath,如下所示。

Get.filename = filePath;

有幾種方法可以將參數傳遞給另一個類。 您沒有對問題的背景有太多的講解,也許您可​​以多寫一點。

不過,這里有幾種方法:

假設您在A類中獲得了此字符串,並希望將其傳遞給B類。

filename變量設置為類A的公共屬性,則如果類B引用了類A,則類B可以訪問該屬性。這可能是最糟糕的解決方案,因為類B必須引用類A,而類B必須等待該屬性來使用。

更好的解決方案是實現觀察者模式 ,其中A為主題,B為觀察者。 如果您需要從JFileChooser獲得字符串后立即傳遞字符串,則這是最佳解決方案。

另一個解決方案是將字符串存儲在所有類都可以訪問的Singleton對象中。

我認為,后兩種解決方案是首選。 但這完全取決於問題的上下文和應用程序的復雜性(也許不需要使代碼與模式復雜化)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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