如何在Java中使用彼此两个类的方法?

时间:2012-07-20 17:53:01

标签: java

我一直在四处寻找,至少在我身上找到了一个不够清楚的答案。

我正在使用GUI构建一个非常基本的聊天应用程序,我将GUI与连接内容分开。现在我需要在服务器类中从GUI调用一个方法,反之亦然。但我不太明白该怎么做(即使是“这个”)。这是代码的一部分(这是一个名为server_frame的类):

textField.addActionListener(
            new ActionListener() {

                public void actionPerformed(ActionEvent arg0) {
                    try {
                        srv.sendData(arg0.getActionCommand());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    textField.setText("");
                }
            }
            );

这是来自server_frame的代码,srv是来自包含sendData方法的其他类(服务器)的对象,我可能没有正确定义它,所以希望有人可以对它进行定义。

在另一端,生成对象srv的类服务器包含使用此代码中来自server_frame的JTextArea displayArea的方法:

private void displayMessage(final String message){
    sf = new server_frame();
    SwingUtilities.invokeLater(new Runnable(){

        public void run(){
            sf.displayArea.append(message);
        }
    }
            );
}

然而,sf又是一个由server_frame组成的对象,但又可能是错误的定义:)

希望这很清楚,遗憾的是我尝试了搜索,但它只是没有给我我想要的结果,如果你需要更多的信息我会很乐意添加它!

感谢阅读,

MR.P。

P.S。请不要介意我是否发表了术语,我仍然对java很新,并且可以进行任何更正!

2 个答案:

答案 0 :(得分:3)

某些类必须构建这两个对象 - GUI和服务器 - 它应该让每个人都知道另一个。例如,假设主类是ServerApplication。为了清楚起见,我将使用标准的Java约定来启动类名和大写字母。

class ServerApplication {
    Server server;
    ServerFrame gui;

    public static void main(String []) {
        server = new Server(...);
        gui = new ServerFrame(server);
        server.setGui(gui);
    }
}

每个类都应该将引用存储到另一个类中。

class Server {
    ServerFrame gui;

    public void setGui(ServerFrame gui) {
        this.gui = gui;
    }

    ...
}

class ServerFrame extends JFrame {
    Server server;

    public ServerFrame(Server server) {
        this.server = server;
    }

    ...
}

答案 1 :(得分:0)

我认为您可能正在寻找ClassName.this.methodName语法。这些actionlisteners中的这个引用了您创建的匿名类。如果您使用上面的语法,那么您将引用包含匿名类的类。

或者如果你在课堂上寻找私人领域,你会做ClassName.this.privateField