Swing 更新jTextArea时出现问题
我正在写一个RMI聊天程序。在我的程序中,我能够接收和发送消息,但我不能在文本区域显示它。我不确定是什么错误。我还尝试使用事件分派方法。这没用Swing 更新jTextArea时出现问题,swing,rmi,event-dispatch-thread,Swing,Rmi,Event Dispatch Thread,我正在写一个RMI聊天程序。在我的程序中,我能够接收和发送消息,但我不能在文本区域显示它。我不确定是什么错误。我还尝试使用事件分派方法。这没用 public class client extends javax.swing.JFrame implements inter { public client() { initComponents(); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt
public class client extends javax.swing.JFrame implements inter {
public client() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
final inter i = (inter) Naming.lookup("rmi://localhost:1111/client1");
final String msg = jTextField1.getText();
if (msg.length() > 0) {
jTextArea1.append("Me :" + msg);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
i.rcvMsg("Client 1 : " + msg);
} catch (RemoteException ex) {
}
}
});
}
} catch (RemoteException ex) {
} catch (NotBoundException ex) {
} catch (MalformedURLException ex) {
}
}
public void rcvMsg(String msg) {
final String s = msg;
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
System.out.println("server called");
System.out.println(s);
jTextArea1.append(s);
System.out.println("client msg" + java.awt.EventQueue.isDispatchThread());
jTextArea1.update(jTextArea1.getGraphics());
}
});
}
public static void main(String args[]) {
try {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new client().setVisible(true);
}
});
client c2 = new client();
inter stub = (inter) UnicastRemoteObject.exportObject(c2, 0);
Registry registry = LocateRegistry.createRegistry(1113);
registry.bind("client2", stub);
} catch (AlreadyBoundException ex) {
} catch (AccessException ex) {
} catch (RemoteException ex) {
}
}
}
请帮助…在
main
中创建c2
后,调用c2.setVisible(true)代码>
正在client
的c2实例上调用rcvMsg
中的代码。由于c2实例从未显示,因此您看不到任何更改
您可能希望客户端连接到服务器,而不是直接连接到另一个客户端。客户端到客户端将用于2个端点。但是如果你想添加第三个呢?第四名?您确实需要一个充当所有客户端中介的服务器。仅使用getGraphics()共享一些信息是不可取的,可能会导致问题
jTextArea1.update(jTextArea1.getGraphics())
我还使用RMI创建了聊天应用程序:
还有一个客户端写在那里,可能对您有用。可能您的空catch语句隐藏了一些信息?没有……我刚刚删除了ter中的代码,以便在stackoverflow中发布tem。。