开放 类 之间进行通信
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
}
.....
我有三个 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
}
.....