我一直在四处寻找,至少在我身上找到了一个不够清楚的答案。
我正在使用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很新,并且可以进行任何更正!
答案 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