0

その内部クラスを下に示します。これはクライアント/サーバー用で、PrintWriter からの「println」で nullpointer 例外が発生しました。私はそれを解決するために知っていることをすべて試しましたが、失敗しました。私がしなければならないことについて、誰でも私にヒントやアイデアを与えることができます。みんなありがとう!

フルクラスのコードは次のとおりです。

public class ChatClient extends JFrame{
    private JTextField textToSend;
    private Socket socket;
    private PrintWriter writer
    private String name;
    private JTextArea receivedText;
    private Scanner reader;

    public ChatCliente(String name){
        super("Chat: "+ name);
        this.name = name;
        Font font = new Font("Serif", Font.PLAIN, 20);
        textToSend = new JTextField();
        textToSend.setFont(font);
        JButton btn = new JButton("Send");
        btn.setFont(font);
        btn.addActionListener(new Listener());
        Container content = new JPanel();
        content.setLayout(new BorderLayout());
        content.add(BorderLayout.CENTER, textToSend);
        content.add(BorderLayout.EAST, btn);

        receivedText = new JTextArea();
        receivedText.setFont(font);
        JScrollPane scroll = new JScrollPane(receivedText);

        getContentPane().add(BorderLayout.CENTER, scroll);
        getContentPane().add(BorderLayout.SOUTH, content);
        configureNetwork();

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500,500);
        setVisible(true);
    }

    private void configureNetwork(){
        try{
            socket = new Socket("127.0.0.1",5000);
            writer = new PrintWriter(socket.getOutputStream());
            reader = new Scanner(socket.getInputStream());
            new Thread(new ServerThread()).start();
        }catch (Exception e){}
    }

    private class Listener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            try{
                String s  = name;
                String t = textToSend.getText();
                System.out.println(name+" : "+ textToSend.getText());
                writer.println(s+" : "+t);
                writer.flush();
                textToSend.setText("");
                textToSend.requestFocus();
            }catch(Exception ex){
                ex.printStackTrace();
            }
        }
    }

    private class ServerThread implements Runnable{

        @Override
        public void run() {
           String text;
           try{
               while((text = reader.nextLine()) != null){
                   receivedText.append(text+"\n");
               }
           }catch(Exception e){}
        }
    }
}
4

2 に答える 2

0

「名前」は宣言されていません。

多分あなたは意味した:

String s  = "name";
于 2013-09-26T21:14:33.737 に答える