我有一个正在开发的客户端/服务器 MMORPG,我想正确地做事(尽管不可能)。我的问题是:将对我的 GUI 项(JInternalFrame、JPanels 等)的引用传递给我的类以侦听来自服务器的命令/回复的最佳方式是什么。现在这就是我正在做的事情,它很快就会变得很大。
MyCommandReciever(DataInputStream commandIn, DefaultListModel modelUserList, JInternalFrame skillsFrame, Container skillsPanelHeader, Container skillsPanelContent, JInternalFrame characterFrame){
this.commandIn = commandIn;
this.modelUserList = modelUserList;
this.skillsFrame = skillsFrame;
this.skillsPanelHeader = skillsPanelHeader;
this.skillsPanelContent = skillsPanelContent;
this.characterFrame = characterFrame;
}
我不想继续将越来越多的 JInternalFrames 传递给 MyCommandReciever。
做这样的事情有意义吗??
Component[] c = panel.getComponents();
for(int i = 0; i < c.length; i++) {
System.out.println(c[i].getClass().getSimpleName());
}
或者有没有一种方法可以在我的主类中创建我的主类(包括我的 GUI)的实例,并将其传递给 MyCommandReciever,以便它可以访问所有内容(可能像这样):
MyCommandReciever(DataInputStream commandIn, DefaultListModel modelUserList, MyClient m){
如果最后一种方法是可行的方法(我希望不是,我是否需要将它从创建它的实例的类(Character.java 创建 MyClient.java 的实例)传递给它自己( MyClient.java),然后将它从 MyClient.java 传递给 MyCommandReciever.java?
抱歉,如果最后一个问题太令人困惑......让我分解一下:
Character.java 内部:
if (playSuccess.contains("true")){
z++; //to turn off the commandIn functionality in Character screen when MyClient is running
frame.dispose();
new MyClient(accountName, playWho, commandIn, messageIn, commandOut, messageOut, sM, sC);
在 MyClient.java 中:
commandReciever = new MyCommandReciever(commandIn, modelUserList, skillsFrame, skillsPanelHeader, skillsPanelContent, characterFrame);
所以在 character.java 中我必须创建 MyClient 的实例(并分配给变量),但同时将该分配的变量传递给 MyClient。(现在我正在输入这个它甚至似乎不可能)。
请指导我:D 显然,我把我的大脑包裹在了最后一个想法上。