嘿伙计们我正在做家庭作业。我有两个GUI,我想访问相同的数据,这将由我的其他类帐户管理员处理。我相信我需要创建一个主要类,它将同时调用GUI并创建一个accountmanager对象。
构建对象后,如何将信息发送到两个GUI类?
感谢您的帮助,我希望我足够详细。如果不发布所有代码,我真的不知道如何解释它。
修改
好的,我感谢您的回复。我被困在这个..
Account Accnt = new Account();
GUI1 gui1 = new GUI1();
GUI2 gui2 = new GUI2();
我想通过使用GUI来决定为Account Object存储哪些数据。例如,GUI1打开具有用户输入名称的帐户。帐户为每个打开的帐户分配ID号。然后,GUI2可以通过选择ID号来访问为每个帐户存储的信息。
答案 0 :(得分:2)
创建对象,将其传递(引用)到两个GUI中(通过构造函数或方法)。
示例:
main(){
Account accnt = new Account();
// both GUI objects receive the same accnt object
GUI1 gui1 = new GUI1(accnt);
GUI2 gui2 = new GUI2(accnt);
// your code
}
public class GUI1{
private Account accnt;
public GUI1(Account accnt){
this.accnt = accnt;
// your code
}
// your code
}
public class GUI2{
private Account accnt;
public GUI2(Account accnt){
this.accnt = accnt;
// your code
}
// your code
}
答案 1 :(得分:1)
让AccountManager类实现java.util.Observable。
让GUI类实现java.util.Observer。
在AccountManager上为每个GUI类调用addObserver()。
在AccountManager中发生更改时调用notifyObservers。
答案 2 :(得分:1)
您可能希望首先研究一些设计模式。你可以使用observer pattern,或者你可以使用MVC design,如果你想做一些更高级的编程,你迟早要学习它......
只需谷歌“java mvc example”并尝试一下。
答案 3 :(得分:1)
正如其他人所说,有很多方法可以解决这个问题,但是你选择这样做的方式需要反映你的能力(即你的老师/讲师等会知道你是否突然实施了观察者模式并且可以解释它是什么。在这种特殊情况下,我会采用Singleton方法,因为没有数据库或任何主要复杂的东西。
单例是一个只创建一个实例的类,它提供了对象的全局访问点。
以下是单例类的示例以及如何使用单个类:
public final class ExampleSingleton {
private static ExampleSingleton instance = null;
private ExampleSingleton() { /*Do not allow instantiation*/ }
public static ExampleSingleton getInstance() {
if (instance == null) {
instance = new ExampleSingleton();
}
return instance;
}
public void sayHello() {
System.out.println("Hello!");
}
}
上面的类正在使用私有构造函数,这意味着您无法明确构造ExampleSingleton
。这意味着要获得单个对象,您可以执行以下操作:
ExampleSingleton myObject = ExampleSingleton.getInstance();
然后使用您将引用myObject
的对象及其中的任何方法(在本例中为sayHello()
。
这对您来说意味着您的代码最终会看起来像这样:
public class MyGui1 {
private ExampleSingleton myData = null;
public MyGui1() {
myData = ExampleSingleton.getInstance();
}
public updateData(. . .) {
myData.updateData(. . .);
}
public retrieveData(. . . ) {
myData.retrieveData(. . .);
}
}
public class MyGui2 {
private ExampleSingleton myData = null;
public MyGui2() {
myData = ExampleSingleton.getInstance();
}
. . .
//Do you see where I'm going with this?
}
}
public class Main {
public static void Main(String args[]) {
ExampleSingleton myData = ExampleSingleton.getInstance();
myData.setInitialData(. . .);
MyGui1 = new MyGui1();
MyGui2 = new MyGui2();
//Do more stuff here
}
}
由于两个GUI对象都使用相同的单例,因此两者都可以使用这些数据。
答案 4 :(得分:0)
你的问题有点模糊;有很多方法可以解决这个问题,这是一个例子。
public class MyData()
{
...my data
}
public class ViewOne extends JFrame
{
MyData myData = new MyData;
}
public class ViewTwo extends JFrame
{
MyData myData = new MyData;
}
答案 5 :(得分:0)
您可以通过两种方式实现:
Data theData = new Data(); GUIObject object1 = new GUIObject(); GUIObject object2 = new GUIObject(); object1.setData(data); object2.setData(data);