プロが教えるわが家の防犯対策術!

Java初心者です。
下記のJavaのプログラムで(6)のところで(1)から(4)が呼び出されると(1)と(4)はうまく動作して画面に表示されるのですが(2)(3)がうまく動きません。ソースは長いので全部掲載できませんが、基本的にはほかの部分はうまく動いています。(5)ではうまくテキストフィールドfield2に文字が表示されます。
原因と対処方法を教えてください。

public ChatServer(){
............
field1 = new TextField("ABC");
field1.setLocation(10,30);
field1.setSize(150,25);
field1.addActionListener(this);
add(field1);
field2 = new TextField("DEF");
field2.setLocation(10,60);
field2.setSize(150,25);
add(field2);
............
public void text1(String ss){
(1) System.out.println("1:*****" + ss);
(2) field2.setText(ss);
(3) field1.setText("AAA");
(4) System.out.println("2:*****" + ss);
}
public void actionPerformed(ActionEvent e){
String ss;
if(e.getSource() == field1){
ss = field1.getText();
(5) field2.setText(ss);
}
}
}
class clientProc implements Runnable {
ChatServer serv2 = new ChatServer();
.............
String line = in.readLine();
while (!"quit".equals(line)){
line = in.readLine();
(6) serv2.text1(line);
System.out.println("***");
}
..............
}

A 回答 (1件)

僕の環境では、下の最小構成コードでとりあえずちゃんと動く。


(Java1.4.2_02/Java1.4.1/Java1.3.0_02、WindowsMe)

コンパイル javac Client.java
実行 java Client

-------------------
ということで、不具合がどの部分で起こっているのか特定できない場合、
「(不具合が再現する、)コンパイルかつ実行が可能な最小構成コード」を作ってみて、
それを丸ごと掲示するとよい。


//サーバ
import java.awt.*;
import java.awt.event.*;

public class Server extends Frame {
private TextField field1, field2;

public Server() {
setLayout(null);
field1 = new TextField("ABC");
field1.setLocation(10,30);
field1.setSize(150,25);
add(field1);
field2 = new TextField("DEF");
field2.setLocation(10,60);
field2.setSize(150,25);
add(field2);

setSize(200, 160);
setVisible(true);
}

public void text1(String ss){
System.out.println("1:*****" + ss);
field2.setText(ss);
field1.setText("AAA");
System.out.println("2:*****" + ss);
}
}
//---------------------
//クライアント

import java.io.*;

public class Client {
public static void main(String[] args){
Server serv2 = new Server();
//キーボード入力読み取り用
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));

Client t = new Client();
String line = null;

while (!"quit".equals(line)){
try {
line = in.readLine();
} catch(Exception e) {e.printStackTrace();}
serv2.text1(line);
System.out.println("***");
}
}
}
    • good
    • 0
この回答へのお礼

わざわざありがとうございました。
原因は判明しました。

お礼日時:2003/11/11 16:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!