java GUI setText和append不适用于其他类

时间:2013-03-29 16:07:12

标签: java swing client-server jtextarea settext

我刚刚开始查看客户端和服务器,我正在将客户端链接到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");
    }
}

1 个答案:

答案 0 :(得分:1)

main方法中,而不是:

new ClientGUI().setVisible(true);

使用:

ClientGUI cgui = new ClientGUI();
cgui.setVisible(true);

更改:

c.startUP();

c.startUP(cgui);

更改startUP的{​​{1}}方法,如下所示:

Client.java