【问题标题】:java GUI setText and append doesn't work from another classjava GUI setText 和 append 在另一个类中不起作用
【发布时间】:2013-03-29 16:07:11
【问题描述】:

我刚刚开始查看客户端和服务器,并且正在将客户端链接到 gui,到目前为止,我已经做到了,所以当您在 JTextField(称为“输入”)中输入文本时,它会将其发送到 @987654322 @ 并打印出来以确保它有效。 但是,当我设置要发回的东西并附加到JTextArea(称为“输出”)时,它会被发送出去并可以打印出来,但它没有设置为JTextArea。 我也尝试过使用setText,但这也不起作用。

当我运行 Client.java 时,它会启动并在 cmd 中显示

sent

然后在 ClientGUI.java 的 cmd 中显示

it worked.

这是要发送到 gui 而不是 cmd 的内容。

如何让它从Client 类中将文本附加到JTextArea

完整代码:

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");
    }
}

【问题讨论】:

  • 把你的完整代码放在这里会更好理解你的问题..
  • 我已将其更改为添加完整代码,反正也没那么多。

标签: java swing client-server jtextarea settext


【解决方案1】:

main 方法内而不是:

new ClientGUI().setVisible(true);

使用:

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

改变:

c.startUP();

c.startUP(cgui);

并将Client.javastartUP方法更改如下:

    public void startUP(final ClientGUI cg){
       new java.util.Timer().schedule( 
        new java.util.TimerTask() {
            @Override
            public void run() 
            {
                 System.out.println("sent");
                 cg.output();
            }
        }, 
        5000 
);

【讨论】:

  • for ClientGUI cgui = new ClientGUI().setVisible(true);我得到不兼容的类型,需要:CLientGUI,找到:void
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2017-10-19
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多