1

クライアントとサーバーを調べ始めたばかりで、クラ​​イアントをGUIにリンクしています。これまでのところ、JTextField(「入力」と呼ばれる)にテキストを入力すると、テキストが送信されClient.java、印刷されて確認されます動作します。ただし、何かを送信してJTextArea(「出力」と呼ばれる) に追加するように設定すると、送信されて印刷できますが、に設定されていませんJTextArea。私も使ってみsetTextましたが、どちらもうまくいきません。

実行するClient.javaと起動し、cmdで次のように表示されます

sent

次に、それのコマンドClientGUI.java

it worked.

これは、cmd ではなく gui に送信されることを意図していたものです。

JTextAreafrom クラスにテキストを追加するにはどうすればよい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");
    }
}
4

1 に答える 1

1

mainの代わりにメソッド内:

new ClientGUI().setVisible(true);

使用する:

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

変化 :

c.startUP();

c.startUP(cgui);

startUPの方法をClient.java次のように変更します。

    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 
);
于 2013-03-29T16:20:42.103 に答える