开放 类 之间进行通信

Communicating between open classes

我有三个 class。一个是 worker class,它完成所有艰苦的工作但不显示任何内容。另外两个是 GUI classes,其中一个调用另一个。调用第二个 GUI class 的那个打开了 worker class。

第一个 GUI 使用此方法调用第二个:

protected void openAdd() {

        AddPet add = new AddPet(ADD_PROMPT, FIELDS, DATE_PROMPT);
        add.setVisible(true);
    }

第二个 GUI class 用于从 worker class 中使用的用户获取信息,但是,因为我已经在第一个 GUI 中打开了 worker class我不想再打开了,我想用第一个GUI中的一些信息。

我需要做的是将第二个 GUI 中的信息传递回第一个 GUI,以便它可以使用它并将其传递给 open worker class。

我该怎么做?

编辑: 我认为最好的选择是从第二个 GUI 调用第一个 GUI 中的方法,但我不知道这是否可能。

转念一想,您的第二个 window 似乎主要用作第一个 window 的对话,并且您将其用于用户数据输入,除此之外别无他用.如果是这样,请确保第二个 window 不是 JFrame,而是模式 JDialog。如果是这样,那么当第一个 window 打开时,它将阻止用户与第一个 window 的交互,并且从中提取信息将很容易,因为您知道 确切 当用户完成了,因为程序流将在第一个 GUI 中恢复,紧随您设置第二个 window 可见的代码之后。

例如,

// in this example, AddPet is a modal JDialog, not a JFrame
protected void openAdd() {
    // I'm passing *this* into the constructor, so it can be used ...
    //    ... in the JDialog super constructor
    AddPet add = new AddPet(this, ADD_PROMPT, FIELDS, DATE_PROMPT);
    add.setVisible(true);

    // code starts here immediately after the AddPet modal dialog is no longer visible
    // so you can extract information from the class easy:

    String petName = add.getPetName(); // I know you don't use these exact methods
    String petBreed = add.getPetBreed(); // but they're just a "for instance" type of code
    // ... etc

}

.....