⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame1.java.bak

📁 java
💻 BAK
字号:
/***************************************************
*  程序文件名称: Frame1.java
*  功能:多用户聊天室的客户端程序(聊天界面),
*        构造和设置聊天界面的布局及与服务器进行数据交换。
***************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class Frame1 extends JFrame implements Runnable{ 
Thread thread; 
JPanel contentPane; 
Frame2 frame=new Frame2(); 
JScrollPane jScrollPane1 = new JScrollPane(); 
JScrollPane jScrollPane2 = new JScrollPane(); 
JButton jButton1 = new JButton(); 
JButton jButton2 = new JButton(); 
JTextArea jTextArea1 = new JTextArea(); 
JTextArea jTextArea2 = new JTextArea(); 
JScrollPane jScrollPane3 = new JScrollPane(); 
JList jList1 = new JList(); 
Socket socket; 
int port =10000; 
DataInputStream in; 
DataOutputStream out; 
Vector vector=new Vector(); 
String wenBen; 
String str; 
String xinxi; 
public Frame1() { 
try { 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
addWindowListener 
( 
new WindowAdapter() { 
public void windowClosing(WindowEvent e) { 
try{ 
out.writeUTF("下线了:"+frame.name+"/"+frame.sex); 

out.close() ; 

in.close() ; 
socket.close(); 

} 
catch(Exception ee){ 

} 
finally{ 
frame.dispose() ; 
dispose(); 
} 
} 
} 
); 
jbInit(); 
} catch (Exception exception) { 
exception.printStackTrace(); 
} 

} 

/** 
* Component initialization. 
* 
* @throws java.lang.Exception 
*/ 
private void jbInit() throws Exception { 
contentPane = (JPanel) getContentPane(); 
contentPane.setLayout(null); 
setTitle("聊天界面"); 
this.setResizable(false); 
setSize(new Dimension(602, 515)); 
frame.setVisible(true); 
jScrollPane1.setBounds(new Rectangle(2, 2, 445, 320)); 
jScrollPane2.setBounds(new Rectangle(1, 333, 448, 95)); 
jButton1.setBounds(new Rectangle(93, 441, 78, 31)); 
jButton1.setText("发送"); 
jButton2.setBounds(new Rectangle(185, 441, 76, 31)); 
jButton2.setText("清空"); 
jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this)); 
jTextArea1.setEditable(false); 
jScrollPane3.setBounds(new Rectangle(458, 6, 139, 424)); 
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this)); 
jTextArea2.addKeyListener(new Frame1_jTextArea2_keyAdapter(this)); 
contentPane.add(jScrollPane2); 
jScrollPane2.getViewport().add(jTextArea2); 
contentPane.add(jScrollPane1, null); 
jScrollPane1.getViewport().add(jTextArea1); 
contentPane.add(jScrollPane3); 
contentPane.add(jButton1); 
contentPane.add(jButton2); 
jScrollPane3.getViewport().add(jList1); 
this.setVisible(false); 
try { 
InetAddress address=InetAddress.getLocalHost();
socket = new Socket(address.getHostAddress(), port); 
in = new DataInputStream(socket.getInputStream()); 

out = new DataOutputStream(socket.getOutputStream()); 
} catch (Exception e) { 
setVisible(true); 
jTextArea2.setText("无法与服务器联接,请退出...") ; 
} 
if (thread == null) { 
thread = new Thread(this); 
thread.start(); 

} 
frame.setClection(socket, in, out); 

} 
public boolean setClection1() { 
frame.setClection(socket, in, out); 
return frame.bool; 
} 
public void setClection2() { 
wenBen = jTextArea2.getText(); 
if (wenBen.equals("")) { 
jTextArea2.setText("please say a word:"); 
return; 
} 

try { 
out.writeUTF(frame.name + " : " + wenBen); 
jTextArea2.setText("") ; 
} catch (Exception ee) { 

} 
} 
public void run() { 
String sl = null; 
String ss = null; 
String s = null; 

while (true) { 

try { 

sl = in.readUTF(); 
} catch (Exception ee) { 
vector.removeAllElements(); 
jList1.setListData(vector); 
jTextArea2.setText("巳经与服务器断开..."); 
return; 
} 
if(sl.startsWith("可以注册") ){ 
frame.setVisible(false); 
setVisible(true); 
setTitle("昵称..." + frame.getName()); 
(见教材)
} 
else if(sl.startsWith("该用户名已注册")){ 
frame.jTextField1.setText("请重新输入昵称") ; 
continue; 
} 

else if (sl.startsWith("新用户")) { 
StringTokenizer st = new StringTokenizer(sl, ":"); 
ss = null; 
s = null; 

ss = st.nextToken(); 
s = st.nextToken(); 
vector.addElement(s); 
jList1.setListData(vector); 
continue; 
} 
else if (sl.startsWith("下线了")) { 
StringTokenizer st = new StringTokenizer(sl, ":"); 
ss = null; 
s = null; 

ss = st.nextToken(); 
s = st.nextToken(); 

vector.removeElement(s); 
jList1.setListData(vector); 
continue; 
} 
jTextArea1.append(sl + "\n"); 
} 

}

public void jButton1_actionPerformed(ActionEvent e) { 
setClection2(); 


} 

public void jButton2_actionPerformed(ActionEvent e) { 
jTextArea1.setText(""); 
} 

public void jTextArea2_keyPressed(KeyEvent e) { 
if(e.isControlDown() &&e.getKeyCode()==KeyEvent.VK_ENTER ){ 
setClection2(); 
} 
}
} 

class Frame1_jTextArea2_keyAdapter extends KeyAdapter { 
private Frame1 adaptee; 
Frame1_jTextArea2_keyAdapter(Frame1 adaptee) { 
this.adaptee = adaptee; 
} 

public void keyPressed(KeyEvent e) { 
adaptee.jTextArea2_keyPressed(e); 
} 
} 

class Frame1_jButton2_actionAdapter implements ActionListener { 
private Frame1 adaptee; 
Frame1_jButton2_actionAdapter(Frame1 adaptee) { 
this.adaptee = adaptee; 
} 

public void actionPerformed(ActionEvent e) { 
adaptee.jButton2_actionPerformed(e); 
} 
} 

class Frame1_jButton1_actionAdapter implements ActionListener { 
private Frame1 adaptee; 
Frame1_jButton1_actionAdapter(Frame1 adaptee) { 
this.adaptee = adaptee; 
} 

public void actionPerformed(ActionEvent e) { 

adaptee.jButton1_actionPerformed((见教材)); 
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -