亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chatclient.java

?? JAVA 聊天室源碼
?? JAVA
字號:
package liaotshi2;



import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

import javax.swing.event.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
import java.net.*;
import java.io.*;

/**
 * ListSelectionListener 是實現JList類事件的接口 ItemListener 是實現JCheckBox類事件的接口
 * ActionListener 是實現JButton類,JComboBox類事件的接口
 */


// chatClient類為聊天室的登陸界面類,是個applet

public class chatClient extends JApplet implements ListSelectionListener, ActionListener,
		ItemListener {
	JPanel panel,mpanel;

	JLabel label1, label2, label3, label4;

	JButton login,register;
	GridBagLayout gbObject;
	GridBagConstraints gbc;
	JTextField custName;
	JPasswordField custPassword;
	Socket socket;
	PrintStream toServer;

	JPanel panelObject;
	JTextArea jtextarea;
	JScrollPane jscrollpane;// 設置滾動條
	GridBagLayout cgbObject;
	GridBagConstraints cgbc;
	JList listCust;
	DefaultListModel model;// 顯示在線用戶列表的類,放在JList當中
	JScrollPane jscrollpane1;
	JCheckBox check1, check2;
	JTextField textCust, textMessage;
	JComboBox box1, box2, box3;
	JButton buttonSend;
	String str;
	static int flag = 1;
	static String ccustName = null;

	Socket soc;
	PrintStream ps;
	Listen listen = null;
	
	public chatClient() {

		try {
			socket = new Socket("127.0.0.1", 7894);
			toServer = new PrintStream(socket.getOutputStream());

		} catch (IOException e) {
			JOptionPane.showMessageDialog(null, "不在聊天時段!請注意開放時間09:00——22:00", "警告",
					JOptionPane.ERROR_MESSAGE);
			System.out.println("Error1:" + e);
		}
		mpanel = new JPanel();
		panel = new JPanel();
		gbObject = new GridBagLayout();
		gbc = new GridBagConstraints();
		panel.setLayout(gbObject);
		panel.setBackground(Color.white);
		label1 = new JLabel("歡迎光臨java聊天室");
		Font font = new Font("宋體", Font.BOLD, 15);
		Font font1 = new Font("宋體", Font.BOLD, 13);
		label1.setFont(font);

		label2 = new JLabel("名字");
		label3 = new JLabel("密碼");
		label4 = new JLabel("游客登陸不需密碼");
		label4.setFont(font1);

		login = new JButton("登陸");
		register= new JButton("注冊");
		custName = new JTextField(10);
		custPassword = new JPasswordField(10);

		login.addActionListener(this);
		register.addActionListener(this);

		gbc.gridx = 3;
		gbc.gridy = 0;

		gbObject.setConstraints(label1, gbc);
		panel.add(label1);

		gbc.anchor = GridBagConstraints.WEST;
		gbc.gridx = 1;
		gbc.gridy = 10;
		gbObject.setConstraints(label2, gbc);
		panel.add(label2);

		gbc.anchor = GridBagConstraints.WEST;
		gbc.gridx = 3;
		gbc.gridy = 10;
		gbObject.setConstraints(custName, gbc);
		panel.add(custName);

		gbc.anchor = GridBagConstraints.WEST;
		gbc.gridx = 1;
		gbc.gridy = 50;
		gbObject.setConstraints(label3, gbc);
		panel.add(label3);

		gbc.anchor = GridBagConstraints.WEST;
		gbc.gridx = 3;
		gbc.gridy = 50;
		gbObject.setConstraints(custPassword, gbc);
		panel.add(custPassword);

		gbc.anchor = GridBagConstraints.WEST;
		gbc.gridx = 5;
		gbc.gridy = 50;
		gbObject.setConstraints(label4, gbc);
		panel.add(label4);

		gbc.anchor = GridBagConstraints.WEST;
		gbc.gridx = 3;
		gbc.gridy = 100;
		gbObject.setConstraints(login, gbc);
		panel.add(login);
		panel.add(register);
		
		
		//聊天panel
		

		Font cfont = new Font("宋體", Font.PLAIN, 12);
		Font textFont = new Font("宋體", Font.PLAIN, 14);
		panelObject = new JPanel();
		panelObject.setBackground(Color.pink);
		// panelObject.setForeground(Color.blue);
		cgbObject = new GridBagLayout();
		cgbc = new GridBagConstraints();
//getContentPane().add(panelObject);
		panelObject.setLayout(cgbObject);
		jtextarea = new JTextArea("歡迎進入本聊天室\n", 30, 120);

		jtextarea.setBackground(Color.lightGray);
		jtextarea.setForeground(Color.blue);// 設置前景顏色
		jtextarea.setBorder(BorderFactory.createEtchedBorder(Color.white,
				Color.black));
		// 設置文本區域的邊框
		jtextarea.setWrapStyleWord(true);// 設置自動換行
		jtextarea.setEditable(false);// 設置文本區域不可編輯
		jtextarea.setFont(textFont);
		model = new DefaultListModel();// model類為顯示在線用戶列表的類,它放在JList類的構造符當中

		listCust = new JList(model);// 將model放在JList當中
		listCust.setBackground(Color.white);
		listCust.setForeground(Color.red);
		listCust.setBorder(BorderFactory.createEtchedBorder(Color.white,
				Color.black));
		listCust.addListSelectionListener(this);// 添加監聽器,其接口是ListSelectionListener
		jscrollpane = new JScrollPane(jtextarea,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		jscrollpane.getVerticalScrollBar().setValue(
				jscrollpane.getVerticalScrollBar().getMaximum());
		// 設置當文本區域需要換行時滾動條自動下拉(自動滾屏)
		jscrollpane1 = new JScrollPane(listCust,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		// 設置文本區域框的橫向滾動條為沒有,縱向滾動條始終出現
		check1 = new JCheckBox("私聊");
		check1.setBackground(Color.pink);
		check1.setFont(cfont);
		textCust = new JTextField("所有人", 8);
		textCust.setEditable(false);
		check2 = new JCheckBox("分屏");
		check2.setFont(cfont);
		check2.setBackground(Color.pink);
		check2.addItemListener(this);
		check1.addItemListener(this);

		textMessage = new JTextField(50);

		box1 = new JComboBox();
		box1.addItem("語態>>");
		box1.addItem("溫柔地");
		box1.addItem("羞嗒嗒地");
		box1.addItem("懇求地");
		box1.addItem("微笑地");
		box1.addItem("冤枉地");
		box1.addItem("生氣地");
		box1.addItem("興高采烈地");
		box1.setBackground(Color.white);
		box1.setFont(cfont);
		box2 = new JComboBox();
		box2.addItem("字色>>");
		box2.addItem("黃色");
		box2.addItem("大紅");
		box2.addItem("綠色");
		box2.addItem("藍色");
		box2.setBackground(Color.white);
		box2.setFont(cfont);
		box2.addActionListener(this);
		box3 = new JComboBox();
		box3.addItem("插圖>>");
		box3.setBackground(Color.white);
		box3.setFont(cfont);
		box1.addItemListener(this);
		box2.addItemListener(this);
		box3.addItemListener(this);
		buttonSend = new JButton("發言");
		buttonSend.addActionListener(this);

		buttonSend.setBackground(Color.pink);
		buttonSend.setFont(cfont);

		// gbc.fill=GridBagConstraints.BOTH;
		cgbc.anchor = GridBagConstraints.EAST;
		cgbc.gridwidth = 5;
		cgbc.gridheight = 1;
		cgbObject.setConstraints(jscrollpane, cgbc);
		panelObject.add(jscrollpane);

		cgbc.anchor = GridBagConstraints.EAST;
		cgbc.fill = GridBagConstraints.BOTH;
		cgbc.gridwidth = GridBagConstraints.REMAINDER;
		// gbc.weighty=1.0;
		cgbc.gridheight = 2;
		cgbObject.setConstraints(jscrollpane1, cgbc);
		panelObject.add(jscrollpane1);

		/*
		 * gbc.anchor=GridBagConstraints.WEST;
		 * gbc.gridwidth=GridBagConstraints.REMAINDER;
		 * gbc.fill=GridBagConstraints.NONE; gbc.weightx=0.0; gbc.weighty=0.0;
		 * gbc.gridheight=1; //gbc.gridwidth=1;
		 * gbObject.setConstraints(label1,gbc); panelObject.add(label1);
		 */

		cgbc.anchor = GridBagConstraints.WEST;
		cgbc.gridheight = 1;
		cgbc.gridwidth = 1;
		cgbObject.setConstraints(textMessage, cgbc);
		panelObject.add(textCust);

		cgbc.anchor = GridBagConstraints.WEST;
		cgbc.gridheight = 1;
		cgbc.gridwidth = 1;
		cgbObject.setConstraints(check1, cgbc);
		panelObject.add(check1);

		cgbc.anchor = GridBagConstraints.WEST;
		cgbc.fill = GridBagConstraints.NONE;
		cgbc.gridheight = 1;
		cgbc.gridwidth = 1;
		cgbc.weighty = 0.0;
		cgbObject.setConstraints(box1, cgbc);
		panelObject.add(box1);

		cgbc.anchor = GridBagConstraints.WEST;
		cgbc.gridheight = 1;
		cgbc.gridwidth = 1;
		cgbc.weighty = 0.0;
		cgbObject.setConstraints(box2, cgbc);
		panelObject.add(box2);

		cgbc.anchor = GridBagConstraints.WEST;
		cgbc.gridheight = 1;
		cgbc.gridwidth = 1;
		cgbc.weighty = 0.0;
		cgbObject.setConstraints(box3, cgbc);
		panelObject.add(box3);

		cgbc.gridwidth = GridBagConstraints.REMAINDER;
		cgbc.anchor = GridBagConstraints.WEST;
		// gbc.gridwidth=1;
		cgbc.gridheight = 1;
		cgbObject.setConstraints(check2, cgbc);
		panelObject.add(check2);

		cgbc.anchor = GridBagConstraints.EAST;
		// gbc.fill=GridBagConstraints.BOTH;
		// gbc.weightx=1.0;
		cgbc.weighty = 0.0;
		cgbc.gridheight = 1;
		cgbc.gridwidth = 1;
		cgbObject.setConstraints(textMessage, cgbc);
		panelObject.add(textMessage);

		cgbc.anchor = GridBagConstraints.WEST;
		cgbc.fill = GridBagConstraints.NONE;
		cgbc.gridwidth = GridBagConstraints.REMAINDER;
		cgbc.gridheight = 1;
		cgbObject.setConstraints(buttonSend, cgbc);
		panelObject.add(buttonSend);
		
		getContentPane().add(mpanel);
		mpanel.add(panel);
		//panel.setSize(100, 200);
		panel.setLocation(200, 100);
		mpanel.add(panelObject);
		//panelObject.setSize(800, 600);
		panel.setLocation(200, 100);
		panelObject.setVisible(false);
		
//		this.setSize(500, 300);
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == box2)// 當用戶選擇JComboBox的下拉列表選擇顏色時
		{
			String color = (String) box2.getSelectedItem();// 定義字符串以獲得用戶所選擇的顏色
			if (color.equals("字色>>")) {
				box2.setBackground(Color.blue);
				jtextarea.setForeground(Color.blue);
			}
			if (color.equals("黃色")) {
				box2.setBackground(Color.yellow);
				jtextarea.setForeground(Color.yellow);
			}
			if (color.equals("大紅")) {
				box2.setBackground(Color.red);
				jtextarea.setForeground(Color.red);
			}
			if (color.equals("綠色")) {
				box2.setBackground(Color.green);
				jtextarea.setForeground(Color.green);
			} else if (color.equals("藍色")) {
				box2.setBackground(Color.blue);
				jtextarea.setForeground(Color.blue);
			}
		}
		if (e.getSource() == buttonSend)// 當用戶點擊發送按鈕時
		{
			if (textMessage.getText().equals(""))// 如果發送的內容為空
			{
				JOptionPane.showMessageDialog(null, "發送消息不能為空", "警告",
						JOptionPane.ERROR_MESSAGE);
			}
			else if (textMessage.getText() != null) {

				if (flag % 2 == 1)// 如果是公聊
				{
					StringBuffer msg = new StringBuffer("MSG:"); // 定義并實例化一個字符緩沖存儲發送的聊天信息
					String action = (String) box1.getSelectedItem();
					if (action.equals("語態>>")) {
						action = "";
					}
					String message = action + "對" + textCust.getText() + "說:";
					message = message + textMessage.getText();
					// 其中MSG為關鍵詞
					ps.println(msg.append(message)); // 用打印流發送聊天信息
					ps.flush();
					textMessage.setText(null);
					// jscrollpane.getVerticalScrollBar().setValue(500);
					// jscrollpane.getVerticalScrollBar().setValue(jscrollpane.getVerticalScrollBar().getMaximum());
				}
				if (flag % 2 == 0)// 如果是私聊
				{
					StringBuffer privateMsg = new StringBuffer("PRIVATE:");
					String tm = (String) textCust.getText();
					String pm = str + ":" + tm + ":" + textMessage.getText();
					ps.println(privateMsg.append(pm));
					ps.flush();
				}
			}
		}
		
		if (e.getSource() == login)// 當用戶點擊登陸按鈕時
		{

			if (custName.getText().equals(""))// 判斷用戶名和密碼是否為空,如果為空就提出警告
			{
				JOptionPane.showMessageDialog(null, "用戶名不能為空", "警告",
						JOptionPane.ERROR_MESSAGE);
			}

			else {
				//app app1 = new app(this);// 如果不為空就進入聊天室主界面
				
				try {
					soc = this.socket;

					ps = new PrintStream(soc.getOutputStream());
					str = (String) this.custName.getText();
					listen = new Listen(this, str, soc);
					panel.setVisible(false);
					panelObject.setVisible(true);
					//Listen(this, str, soc);
					// Listen類為線程類,在后面實現
				} catch (Exception e1) {
					e1.printStackTrace();
				}
				
				
				
				StringBuffer info = new StringBuffer("INFO: ");
				String userinfo = custName.getText().trim();// trim()方法為去掉字符串的空格
				toServer.println(info.append(userinfo));// 一旦登陸就把用戶名發送到服務器端以顯示在線用戶列表
				toServer.flush();
			}

		}
		if (e.getSource() == register) 
		{
			
		}

	}
	
	public void itemStateChanged(ItemEvent e1)// 此方法是ItmeListener接口的方法
	{
		if (e1.getItemSelectable() == check1)// 當用戶選擇私聊復選框時
		{
			flag++;
		}
	}

	public void valueChanged(ListSelectionEvent e2)// 此方法是ListSelectionListener接口的方法
	{
		JList list = (JList) e2.getSource();
		ccustName = (String) list.getSelectedValue();// 獲得用戶點擊的用戶
		if (ccustName != null) {
			textCust.setText(ccustName);// 把它顯示在說話對象的文本框內
		}
	}
}

  //下面是從數據庫用戶登錄
//public void denglu() {
//	try {
//		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//		Connection con = DriverManager.getConnection("jdbc:odbc:myDSN",
//				"sa", "niit");
//		Statement st=con.createStatement();
//		String sql="select username,ps from biao";
//		ResultSet rs=st.executeQuery(sql);
//		boolean flag=false;
//	    while(rs.next())
//	    {
//	    	String id=rs.getString("username");
//	    	String mima=rs.getString("ps");
//	    	if(id.equals(custName.getText())&&mima.equals(custPassword.getText()))
//	    	{
//	    		flag=true;
//	    	}
//	    }
//	    if(flag==true)
//	    {
//	    	JOptionPane.showMessageDialog(null, "登陸成功");
//	    }
//	    else
//	    	JOptionPane.showMessageDialog(null, "登陸失敗");
//	} catch (ClassNotFoundException e) {
//		// TODO Auto-generated catch block
//		e.printStackTrace();
//	} catch (SQLException e) {
//		// TODO Auto-generated catch block
//		e.printStackTrace();
//	}
//}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜电影网一区| 99国产精品99久久久久久| 成人综合婷婷国产精品久久蜜臀 | 欧美性一区二区| 欧美成人一级视频| 午夜亚洲福利老司机| 成人黄色av网站在线| 日韩精品一区二| 亚洲一区二区三区四区在线免费观看 | 久久婷婷色综合| 日韩激情av在线| 在线区一区二视频| 17c精品麻豆一区二区免费| 国内不卡的二区三区中文字幕 | 一区二区三区欧美视频| 国产成人免费视频精品含羞草妖精| 欧美三区免费完整视频在线观看| 亚洲色图制服诱惑| 99久久99久久免费精品蜜臀| 国产午夜精品一区二区三区视频| 麻豆91免费看| 日韩欧美在线123| 日本亚洲三级在线| 欧美电影在线免费观看| 亚洲午夜久久久久久久久电影网 | 91精品免费在线| 日韩激情视频在线观看| 欧美精品自拍偷拍动漫精品| 一区二区免费看| 91国偷自产一区二区开放时间 | 欧美一级欧美一级在线播放| 午夜影视日本亚洲欧洲精品| 在线精品视频小说1| 一二三区精品福利视频| 在线视频一区二区免费| 亚洲电影激情视频网站| 555www色欧美视频| 麻豆精品国产传媒mv男同| 精品国产乱码久久久久久久久| 玖玖九九国产精品| 久久丝袜美腿综合| 成人av第一页| 一区二区不卡在线视频 午夜欧美不卡在| 91农村精品一区二区在线| 亚洲精品视频一区| 欧美日韩夫妻久久| 男男gaygay亚洲| 久久久久久久网| jvid福利写真一区二区三区| 一区二区三区影院| 欧美一区二区三区白人| 国产一区二区三区免费播放 | 丁香婷婷综合网| 综合久久国产九一剧情麻豆| 欧美三片在线视频观看| 蜜臀91精品一区二区三区| 亚洲精品在线观| av中文字幕在线不卡| 亚洲国产成人高清精品| 精品国产a毛片| 成人国产一区二区三区精品| 亚洲福利视频三区| 久久先锋影音av鲁色资源| 色婷婷一区二区| 麻豆专区一区二区三区四区五区| 欧美激情一区二区三区| 欧洲精品在线观看| 国产激情视频一区二区在线观看| 中文字幕亚洲综合久久菠萝蜜| 欧美精品成人一区二区三区四区| 国产一区在线不卡| 亚洲一区在线观看免费| 久久久综合精品| 欧美日韩黄色一区二区| 成人国产精品免费观看| 六月丁香综合在线视频| 亚洲欧美日韩国产一区二区三区 | 国产精品国产馆在线真实露脸| 欧美色图天堂网| 国产91丝袜在线播放0| 亚洲成精国产精品女| 亚洲国产高清aⅴ视频| 91精品国产综合久久久蜜臀图片| 99久久伊人网影院| 国内偷窥港台综合视频在线播放| 亚洲影视在线观看| 国产精品久久毛片a| 日韩欧美一二三区| 欧美日本在线视频| 91在线云播放| proumb性欧美在线观看| 国产麻豆精品在线观看| 蜜臀精品一区二区三区在线观看| 亚洲精品国产a| 国产精品视频免费| 国产日韩精品一区二区三区 | 国产精品成人网| 国产亚洲欧洲一区高清在线观看| 4hu四虎永久在线影院成人| 色诱视频网站一区| 成人国产精品免费网站| 国产精品1024| 国产成人8x视频一区二区| 激情五月婷婷综合| 国产在线精品国自产拍免费| 日本不卡的三区四区五区| 亚洲高清视频中文字幕| 一区二区三区在线观看动漫| 亚洲欧美日韩在线| 亚洲欧美日韩一区二区| 亚洲欧美一区二区三区久本道91| 亚洲视频在线一区观看| 国产精品久久久久久久久搜平片| 久久久91精品国产一区二区精品| 久久亚洲欧美国产精品乐播| 精品粉嫩aⅴ一区二区三区四区| 欧美一区二区人人喊爽| 欧美一区二区三区在线观看视频| 91精品国产综合久久婷婷香蕉 | 日本不卡在线视频| 久久精品免费看| 国产自产v一区二区三区c| 韩国中文字幕2020精品| 国产精品538一区二区在线| 国产精品1024| 成人短视频下载| 在线观看免费成人| 欧美日本一区二区三区| 欧美成人性福生活免费看| 久久精品视频免费观看| 亚洲欧美偷拍另类a∨色屁股| 亚洲男同性恋视频| 日韩精品国产精品| 国产一区二区三区视频在线播放| 风间由美性色一区二区三区| 94-欧美-setu| 欧美日韩激情在线| 中文字幕欧美日本乱码一线二线| 中国av一区二区三区| 日韩码欧中文字| 日韩一区精品视频| 成人夜色视频网站在线观看| 91丨九色porny丨蝌蚪| 欧美精品免费视频| 久久久久国色av免费看影院| 成人免费在线观看入口| 日韩一区欧美二区| 丁香啪啪综合成人亚洲小说| 欧美伊人精品成人久久综合97 | 韩国女主播成人在线| 色婷婷综合久久久中文字幕| 欧美一区二区三区在线看| 国产精品情趣视频| 日韩高清在线不卡| av电影在线观看一区| 日韩欧美资源站| 亚洲欧美日韩一区| 紧缚奴在线一区二区三区| 91免费精品国自产拍在线不卡| 欧美区一区二区三区| 亚洲欧洲美洲综合色网| 日本大胆欧美人术艺术动态 | 亚洲在线视频一区| 国产成人aaa| 日韩欧美国产综合在线一区二区三区| 国产精品网站在线观看| 久久99久久99小草精品免视看| 91小视频在线| 久久奇米777| 日本午夜一区二区| 欧美中文字幕一区二区三区亚洲| 久久综合狠狠综合久久综合88| 亚洲成人手机在线| www.欧美色图| 亚洲国产成人在线| 激情综合网av| 欧美一区二区国产| 亚洲精品大片www| 成人高清视频在线| 久久精品亚洲精品国产欧美kt∨| 日韩国产精品久久| 欧美中文字幕一区二区三区| 国产精品成人免费精品自在线观看| 黑人巨大精品欧美一区| 欧美一区二区免费观在线| 亚洲综合激情网| 欧美艳星brazzers| 亚洲综合丝袜美腿| 色婷婷亚洲综合| 亚洲欧美一区二区三区国产精品 | 欧美久久久久中文字幕| 亚洲欧美另类小说| 色丁香久综合在线久综合在线观看| 亚洲国产高清在线观看视频| 国产成人午夜高潮毛片| 欧美国产精品劲爆| 成人爱爱电影网址| 亚洲欧美日韩一区二区| 在线视频一区二区免费| 亚洲一区在线视频|