首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请各位解答java聊天程序的Client怎么修改

2012-12-28 
请各位解答java聊天程序的Client如何修改存在数组越界:问题处在bt1,bt3,bt31,这三个按钮的方法上啊:import

请各位解答java聊天程序的Client如何修改
存在数组越界:
问题处在bt1,bt3,bt31,这三个按钮的方法上啊:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date; 
import javax.swing.*;
public class Client extends JFrame {
JFrame f1 = new JFrame("聊天1");
JLabel lab1 = new JLabel("用户名 1");
JLabel lab2 = new JLabel("密码1");
JButton bt1 = new JButton("登录1");
JButton bt2 = new JButton("注册1");
JButton bt = new JButton("修改密码");

JTextField text1 = new JTextField(23);//第一个
JPasswordField pasf1 = new JPasswordField(23);//第一个

JFrame f2 = new JFrame("注册表2");
JLabel lab3 = new JLabel("用户名 2");
JLabel lab4 = new JLabel("密码2");
JLabel lab5 = new JLabel("确认密码2");
JButton bt3 = new JButton("确定2");
JButton bt4 = new JButton("取消2");
JTextField text2 = new JTextField(22); //第2个
JPasswordField pasf2 = new JPasswordField(20);//第2个
JPasswordField pasf3 = new JPasswordField(20);//第2个

JFrame f = new JFrame("修改密码3");
JLabel lab31 = new JLabel("用户名 3");
JLabel lab34 = new JLabel("初始密码");
JLabel lab32 = new JLabel("密码3");
JLabel lab33= new JLabel("确认密码3");
JButton bt31 = new JButton("确定3");
JButton bt32 = new JButton("取消3");
JTextField text31 = new JTextField(15); //第3个
JPasswordField pasf31 = new JPasswordField(15);//第3个
JPasswordField pasf32 = new JPasswordField(15);//第3个
JPasswordField pasf33 = new JPasswordField(15);//第3个


JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.LEFT,15,10));
JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT,70,30));
JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER,10,10));



JFrame f3 = new JFrame();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
JTextArea area1 = new JTextArea(15, 10);
JTextArea area2 = new JTextArea(15, 10);

JScrollPane scroll1 = new JScrollPane(area1);
JScrollPane scroll2 = new JScrollPane(area2);

JButton bt5 = new JButton("发送");
JButton bt6 = new JButton("退出");
List list = new List(15, false);
Checkbox cb = new Checkbox("私聊");


BufferedReader bufferedreader;
PrintStream printStream;

Socket socket ;
boolean bool = true;
ObjectInputStream ois;
ObjectOutputStream oos;


 JPanel imagePanel1;
 ImageIcon background1;
 
public Client(){
    


 f1.add(lab1);
     f1.add(text1);
     f1.add(lab2);
     f1.add(pasf1);
     f1.add(bt1);
     f1.add(bt2);


     f1.add(bt);
background1 = new ImageIcon("F:\\图片\\SogouWP\\2.jpg");
JLabel label = new JLabel(background1);
label.setBounds(0, 0, background1.getIconWidth(),
background1.getIconHeight());
imagePanel1 = (JPanel) f1.getContentPane();
imagePanel1.setOpaque(false);
imagePanel1.setLayout(new FlowLayout());
f1.getLayeredPane().setLayout(null);
f1.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f1.setSize(background1.getIconWidth(), background1.getIconHeight());
f1.setResizable(false);
f1.setVisible(true);
panel1.add(panel2);

 
    
panel3.add(lab3);
panel3.add(text2);
panel3.add(lab4);
panel3.add(pasf2);
panel3.add(lab5);
panel3.add(pasf3);
panel3.add(bt3);
panel3.add(bt4);
f2.add(panel3);
f2.setSize(350,300);



panel2.add(lab31);
panel2.add(text31);
panel2.add(lab34);
panel2.add(pasf31);
panel2.add(lab32);
panel2.add(pasf33);

panel2.add(lab33);
panel2.add(pasf32);
panel2.add(bt31);
panel2.add(bt32);
f.add(panel2);
f.setSize(400,350);



f3.setSize(350, 200);
f3.add(panel4, BorderLayout.CENTER);
f3.add(panel5, BorderLayout.SOUTH);
f3.add(list, BorderLayout.EAST);
panel5.add(bt5);
panel5.add(bt6);
panel5.add(cb);



panel4.setLayout(new GridLayout(2, 1));
panel4.add(scroll1);
panel4.add(scroll2);

bt1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae1) {
boolean temp = false;

try {
bufferedreader = new BufferedReader(new FileReader("d:\\pwd.txt"));
String sName = null;
while((sName = bufferedreader.readLine()) != null){
String str=text1.getText();
String str1=new String (pasf1.getPassword());
String[] sarr = sName.split(" ");
if((str.equals(sarr[0])) && (str1.equals(sarr[1]))){

temp = true;
break;

}else{
temp = false;
}
}
if(temp == false){

JOptionPane.showMessageDialog(f1, "抱歉,用户名不存在或密码错误!");
}else{
oos.writeObject(text1.getText());
f1.setVisible(false);
f.setVisible(false);
f3.setTitle(text1.getText()+"正在聊天");
f3.setVisible(true);

}

bufferedreader.close();

catch (Exception e1) {

}
}
});

bt2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {
f1.setVisible(false);
f.setVisible(false);
f2.setVisible(true);
}
});
bt.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {
f1.setVisible(false);
f2.setVisible(false);
f.setVisible(true);
}
});
bt3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae2) {


try {

PrintWriter printwrite= new PrintWriter(new FileWriter("d:\\pwd.txt",true));

String s1= text2.getText();
String s2 = new String (pasf2.getPassword());
String s4 = new String (pasf3.getPassword());
String s3 =s1 + " " + s2;

bufferedreader = new BufferedReader(new FileReader("d:\\pwd.txt"));
String ss = bufferedreader.readLine();
int a = 0;
while((ss= bufferedreader.readLine()) != null){
String[] sss = ss.split(" ");
a = compare(sss[0],s1);
if(s2.equals(s4))
{
if(a == 1){
JOptionPane.showMessageDialog(f2,"该名已被使用");
break;
}

ss = bufferedreader.readLine();
        if(a == 0){
printwrite.println(s3);
JOptionPane.showMessageDialog(f2, "恭喜你 ,注册成功");
f2.setVisible(false);
f1.setVisible(true);
break;
}
}
else{
JOptionPane.showMessageDialog(f2,"密码不一致");
  break;
}
}
printwrite.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
bt31.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae2) {
try {

String s1= text31.getText();
String s2 = new String (pasf31.getPassword());
String s4 =new String (pasf32.getPassword());
String s5 = new String (pasf33.getPassword());
String s3 =s1 + " " + s5;
String s6=s1 + " " + s2;
bufferedreader = new BufferedReader(new FileReader("d:\\pwd.txt"));
String ss = bufferedreader.readLine();
int a = 0;
while((ss= bufferedreader.readLine()) != null){
String[] sss = ss.split(" ");
a = compare(sss[0],s1);

if(s5.equals(s4))
{
if(a ==1){
JOptionPane.showMessageDialog(f,"用户名不存在");
break;
}

ss = bufferedreader.readLine();
        if(a == 0){
        
       BufferedReader bis = null;  
     
      FileWriter bos = null;    
      String s = null;   
     try   {      
      bis = new BufferedReader(new FileReader("d:\\pwd.txt"));
      bos = new FileWriter("d:\\test1.txt");           
      while(null != (s = bis.readLine()))   {       


      s = s.replace(s6,s3);
      s= s+"\r\n";
      bos.write(s);   
      }
      System.out.println(s);
          bos.close();  
      bis.close();
      String result1 = "";
      String result2 = "";
      File file = new File("d:\\test1.txt ");
      
      FileReader fd = new FileReader(file);
      BufferedReader br = new BufferedReader(fd);
      String ss1 = br.readLine();
     while(ss1!=null){
     result1 += ss1;
     ss1 = br.readLine();
     }
      File file1 = new File("d:\\pwd.txt");
      
      FileReader ff = new FileReader(file1);
      BufferedReader bb = new BufferedReader(ff);
      String tt = bb.readLine();
      while(tt!=null){
      result2 += tt;
      tt = bb.readLine();
      }
      
      if(result1.equals(result2))
      {JOptionPane.showMessageDialog(f,"用户名与密码不一致");
                  break;
      }
      else{      
      JOptionPane.showMessageDialog(f,"修改成功");
      File inputFile   = new File("d:\\test1.txt");
          File outputFile = new File("d:\\pwd.txt");
          FileReader in   = new FileReader(inputFile);
          FileWriter out  = new FileWriter(outputFile);
          int c;
          while ((c = in.read()) != -1)
           out.write(c);
          in.close();
          out.close();
      }
      f2.setVisible(false);
f.setVisible(false);
f1.setVisible(true);
      break;


      
     }catch(Exception e){
     }
}
}
else{
JOptionPane.showMessageDialog(f,"密码不一致");
f.setVisible(true);
  break;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
[解决办法]
oos.writeObject(text1.getText());
看看这个输出语句,一般用字节流或字符流.
[解决办法]
问题处在bt1,bt3,bt31,这三个按钮的方法上啊:
在哪一行报的错?
你在程序里面标注一下啊,要不浏览一遍根本找不到。

[解决办法]
键都可用啊.没有问题啊!
按"登陆"时,要启动服务器端.或者注视掉"oos = new ObjectOutputStream(socket.getOutputStream());"这句都可以.
[解决办法]
你在文件里建个用户:
abc 123
efg 456

热点排行