如何在另一个类中使用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值转换成filename String.

帮忙吗?

您可以在想要保存值的类中创建一个静态方法。如:

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

当你从。

得到文件路径后
String filePath = fileToSave.getAbsolutePath();

之后调用另一个类的静态方法。例如,在我的例子中,这个类是Get。

Get.getValue(filePath);

或者创建一个类的构造函数,它可以获取一个字符串值。

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;

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

然而,这里有一些方法:

假设你在类A中获得了这个字符串并想将它传递给类b。

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

更好的解决方案是实现观察者模式,其中A是主体,B是观察者。这是最好的解决方案,如果你需要传递字符串后,立即从JFileChooser。

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

在我看来,后两种解决方案是更可取的。但这完全取决于问题的上下文和应用程序的复杂性(也许没有必要用模式来使代码复杂化)。

相关内容

  • 没有找到相关文章

最新更新