如何在另一个类中使用JFrame中的值

时间:2015-09-30 09:13:09

标签: java swing netbeans

我正在使用一个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值转换为filename String。

任何帮助?

2 个答案:

答案 0 :(得分:1)

您可以在该类中创建要保存值的静态方法。 例如

class Get {

    static String filename;

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

然后从文件路径获取。

String filePath = fileToSave.getAbsolutePath();

之后调用另一个类的静态方法。例如,在我的情况下,该类是Get。

Get.getValue(filePath);

OR Crete获取字符串值的类的构造函数。

class Get {

        String filename;

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

在创建类的对象时,将该值发送给构造函数。

Get g = new Get(filePath);

甚至更简单。在holder类中引入一个静态变量,从jframe类中将其值设置为filepath。

class Get {

    static String filename;

}

然后只需将文件名的值设置为filePath,如下所示。

Get.filename = filePath;

答案 1 :(得分:0)

有几种方法可以将参数传递给另一个类。你没有说过你的问题的背景,也许你可以写更多关于它的内容。

然而,这里的方法很少:

假设您在A类中获得此字符串并希望将其传递给B类。

在类A中创建filename变量公共属性,如果它引用了类A,则类B可以访问该属性。这可能是最糟糕的解决方案,因为B必须引用A类,B必须等待轮到获得这个属性。

更好的解决方案是实现Observer pattern,其中A是主题,B是观察者。如果您需要在从JFileChooser获取字符串后立即传递字符串,这是最佳解决方案。

另一个解决方案是将字符串存储在所有类都可以访问的Singleton对象中。

在我看来,后两种解决方案是首选的解决方案。但这一切都取决于问题的背景和应用程序的复杂性(可能没有必要使用模式使代码复杂化)。