我刚刚开始查看客户端和服务器,我正在将客户端链接到gui,到目前为止,当我在JTextField
(称为“输入”)中输入文本时,我已将其发送到Client.java
并打印出来以确保其有效。
然而,当我设置要发送回来并附加到JTextArea
(称为“输出”)的内容时,它会被发送并且可以打印出来但不会设置为JTextArea
。
我也尝试使用setText
,这也不起作用。
当我运行Client.java
时,它会启动并在cmd中显示
sent
然后在ClientGUI.java
的cmd中显示
it worked.
这意味着要发送给gui而不是cmd。
如何将文字附加到JTextArea
课程的Client
?
完整代码:
ClientGUI.java:
private void InputActionPerformed(java.awt.event.ActionEvent evt) {
String input = Input.getText();
Client c = new Client();
c.input(input);
}
public void output() {
Output.append("it worked.");
//Output.append(null);
}
Client.java:
public void input(String input) {
System.out.println(input);
}
public void startUP() {
System.out.println("sent");
ClientGUI cg = new ClientGUI();
}
public static void main(String args[]) {
Client c = new Client();
c.startUP();
new ClientGUI().setVisible(true);
try {
Socket skt = new Socket("localhost", 1234);
BufferedReader in = new BufferedReader(new
InputStreamReader(skt.getInputStream()));
System.out.print("Received string: '");
while (!in.ready()) {}
String output = in.readLine();
System.out.println(output); // Read one line and output it
System.out.print("'\n");
in.close();
}
catch(Exception e) {
System.out.print("Whoops! It didn't work!\n");
}
}
答案 0 :(得分:1)
在main
方法中,而不是:
new ClientGUI().setVisible(true);
使用:
ClientGUI cgui = new ClientGUI();
cgui.setVisible(true);
更改:
c.startUP();
要
c.startUP(cgui);
更改startUP
的{{1}}方法,如下所示:
Client.java