- 締切済み
Javaがうまく動作しない理由
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("***"); } .............. }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kacchann
- ベストアンサー率58% (347/594)
僕の環境では、下の最小構成コードでとりあえずちゃんと動く。 (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("***"); } } }
お礼
わざわざありがとうございました。 原因は判明しました。