java聊天程序登录过程

时间:2017-09-21 01:40:10

标签: java swing sockets login chat

我正在用java编写聊天程序

特别是,我在登录过程中遇到了问题。

这是代码

ClientBackground.java

package client;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;



public class ClientGui  extends JFrame implements ActionListener{

    private static final long serialVersionUID = 1L;
    String msg;
    JTextArea jta = new JTextArea(40, 25);
    private JTextField jtf = new JTextField(25);
    private ClientBackground client;


    public ClientGui() {

        add(jta, BorderLayout.CENTER);
        add(jtf, BorderLayout.SOUTH);
        jtf.addActionListener(this);
        jta.setEditable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setBounds(800, 100, 400, 600);
        setTitle("client");

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String msg = client.id+ ":" + jtf.getText()+"\n";
        client.sendMessage(msg);
        jtf.setText("");
    }
    public void Clientback(ClientBackground client) {
        this.client = client;
    }
    public void appendMsg(String msg) {
        jta.append(msg);
    }


}

clientgui.java

package client;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;



public class login_Frame extends JFrame{

    private static final long serialVersionUID = 1L;
    private String id;
    private String pass;
    JButton logb = new JButton("login");
    JButton exitb = new JButton("cancel");
    JLabel idlb = new JLabel("ID : ");
    JLabel pwlb = new JLabel("PW : ");
    JTextField idtb = new JTextField();
    JTextField pwtb = new JTextField();
    private ClientBackground client;
    private DataInputStream in;
    boolean test;
    String packet,tmp;

    public login_Frame(){
        new Thread(client).start();
        getContentPane().add(logb);
        getContentPane().add(exitb);
        getContentPane().add(idlb);
        getContentPane().add(pwlb);
        getContentPane().add(idtb);
        getContentPane().add(pwtb);

        setLayout(null);
        setBounds(100, 100, 400, 200);
        setVisible(true);
        logb.setBounds(100, 110, 90, 40);
        exitb.setBounds(210, 110, 90, 40);
        idlb.setBounds(20, 10, 50, 40);
        pwlb.setBounds(20, 60, 50, 40);
        idtb.setBounds(70, 10, 280, 40);
        pwtb.setBounds(70, 60, 280, 40);

        ActionListener confirmListener = new ConfirmListener();
        ActionListener exListener = new ExitListener();
        logb.addActionListener(confirmListener);
        exitb.addActionListener(exListener);
        idtb.addActionListener(confirmListener);
        pwtb.addActionListener(confirmListener);


    }
    public String getidtb(){
        return idtb.getText();
    }
    public String getpwtb(){
        return pwtb.getText();
    }
    private class ConfirmListener implements ActionListener {
        public void actionPerformed(ActionEvent e){
            isLoginCheck();
        }
    }
    private class ExitListener implements ActionListener {
        public void actionPerformed(ActionEvent e){
            System.exit(0);
        }
    }
    public void Clientback(ClientBackground client) {
        this.client = client;
    }
    public void isLoginCheck(){
        id = getidtb();
        pass = getpwtb();
        idtb.setText("");
        pwtb.setText("");
        client.setid(id, pass);
        client.sendMessage(id+"/"+pass);
        if(test){
            client.showFrameTest();
            this.dispose();
        }                   
        else{
            JOptionPane.showMessageDialog(null, "wrong.");
        }
    }

}

login_frame.java

false

这是我的情景, 我执行clientBackground.java。 然后,将出现login_frame。 我会写id,pw。我将点击登录按钮。 然后,将执行登录进程(在clientbackground.java中)。 所以,islogin值将被决定。 在login_frame中将检查islogin值。

但是,如果我点击登录按钮,总是错误的消息...... 我想检查登录时更改login_frame的测试(布尔值)。 但值始终为sendBuffer()。我该怎么办?

0 个答案:

没有答案
相关问题