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

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

?? chatclient.java

?? JAVA 聊天室源碼
?? JAVA
字號:


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", 1001);
			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());*/
		jscrollpane.setSize(715,540);
		//jscrollpane.setPreferredSize(new Dimension(715,540));	//設置大小
		
		// 設置當文本區域需要換行時滾動條自動下拉(自動滾屏)
		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一区二区三区免费野_久草精品视频
欧美在线免费观看亚洲| 经典三级视频一区| 久久精品国产亚洲a| 99久久99久久精品免费观看| 欧美一区二区美女| 亚洲美女在线一区| 国产成人午夜视频| 制服视频三区第一页精品| 中文字幕一区二区三区视频| 蜜臀av性久久久久蜜臀aⅴ| 91色porny| 国产精品嫩草99a| 国产精品一线二线三线| 日韩欧美一二区| 亚洲国产中文字幕| 在线观看视频一区| 国产精品家庭影院| 国产成人福利片| 精品91自产拍在线观看一区| 日韩在线a电影| 欧美丝袜自拍制服另类| 亚洲欧美日韩国产综合| 不卡欧美aaaaa| 国产精品久久久久久久岛一牛影视| 美女精品自拍一二三四| 91麻豆精品国产91久久久使用方法| 亚洲视频一区在线| av成人动漫在线观看| 日本一区二区三区四区| 国产精品资源网| 精品国产成人在线影院| 久久国产精品99久久人人澡| 欧美一区欧美二区| 久久国产精品99久久久久久老狼 | 国产精品1区2区3区在线观看| 欧美巨大另类极品videosbest | 欧美一区二区在线看| 亚洲h精品动漫在线观看| 欧美日韩精品高清| 日日骚欧美日韩| 91麻豆精品国产91久久久更新时间 | 偷拍自拍另类欧美| 欧美一级免费观看| 蜜臀99久久精品久久久久久软件 | 黄色资源网久久资源365| 精品国产亚洲一区二区三区在线观看| 免费在线观看一区二区三区| 日韩欧美中文字幕公布| 国产一区二区三区在线观看精品 | 久久国产麻豆精品| 欧美激情中文不卡| 色综合久久六月婷婷中文字幕| 亚洲精选在线视频| 欧美日产在线观看| 国产一区二区调教| 专区另类欧美日韩| 欧美男生操女生| 国产综合色精品一区二区三区| 亚洲国产精品国自产拍av| 色av一区二区| 日本不卡123| 欧美韩国日本不卡| 欧美在线高清视频| 韩国一区二区视频| 一区二区三区在线观看欧美| 欧美一区二区三区在线| 国产999精品久久久久久绿帽| 亚洲日本va午夜在线电影| 欧美二区乱c少妇| av毛片久久久久**hd| 亚洲成av人片| 国产精品三级在线观看| 911精品国产一区二区在线| 成人一区二区三区视频 | 欧美日韩小视频| 国产传媒欧美日韩成人| 五月天一区二区| 国产精品美女久久久久久久久| 欧美美女直播网站| av影院午夜一区| 日本亚洲一区二区| 亚洲三级视频在线观看| 日韩欧美国产综合一区| 色婷婷一区二区| 国产精品资源在线看| 丝袜国产日韩另类美女| 亚洲欧洲成人自拍| 国产三级欧美三级日产三级99| 在线不卡中文字幕| 亚洲午夜激情网站| 欧美一区二区视频观看视频| 亚洲成人免费视| 国产精品欧美一区二区三区| 久久影院午夜论| 91麻豆精品国产91久久久久久久久| 国精产品一区一区三区mba桃花| 国产精品久久久久久久久果冻传媒 | 久久综合久久综合久久| 五月综合激情日本mⅴ| 亚洲精品国久久99热| 国产偷国产偷精品高清尤物| 91精品国产综合久久婷婷香蕉 | 欧美伦理视频网站| 欧美一区二区三区四区视频 | 欧美精品一卡两卡| 一本大道久久精品懂色aⅴ| 国产九色sp调教91| 国产老妇另类xxxxx| 精品一二三四区| 久久精品免费观看| 麻豆专区一区二区三区四区五区| 亚洲自拍另类综合| 亚洲福利视频导航| 亚洲一区二区三区四区在线| 亚洲综合色婷婷| 亚洲动漫第一页| 偷拍日韩校园综合在线| 日韩主播视频在线| 琪琪一区二区三区| 麻豆成人久久精品二区三区红| 日韩国产欧美一区二区三区| 日本亚洲最大的色成网站www| 热久久久久久久| 国产一区在线不卡| 国产成人免费在线视频| proumb性欧美在线观看| 日本高清视频一区二区| 欧美三级在线播放| 日韩欧美中文字幕制服| 久久精品免视看| 亚洲欧美在线高清| 亚洲综合999| 久久9热精品视频| 国产jizzjizz一区二区| 91在线一区二区| 欧美日本高清视频在线观看| 日韩一区国产二区欧美三区| 久久久久久久久97黄色工厂| 国产精品美女www爽爽爽| 亚洲激情五月婷婷| 日本不卡视频在线| 成人h精品动漫一区二区三区| 91啪在线观看| 精品日韩欧美一区二区| 国产精品成人一区二区艾草 | 欧美精品日韩一区| 26uuu精品一区二区 | 久久精品一区二区| 亚洲人妖av一区二区| 视频在线在亚洲| 粉嫩欧美一区二区三区高清影视 | 在线免费一区三区| 91麻豆精品国产自产在线| 国产性色一区二区| 亚洲尤物在线视频观看| 国产伦理精品不卡| 欧美日韩视频在线第一区| 国产婷婷精品av在线| 午夜私人影院久久久久| 国产91对白在线观看九色| 欧美日韩中文国产| 国产精品女同互慰在线看| 五月开心婷婷久久| 国产一区二区三区最好精华液| 欧洲精品在线观看| 中文字幕免费一区| 狠狠色狠狠色合久久伊人| 在线一区二区视频| 国产精品视频线看| 韩国欧美国产一区| 7777精品伊人久久久大香线蕉最新版| 欧美激情一区二区| 看电视剧不卡顿的网站| 欧美日韩精品一区视频| 国产精品国产三级国产a| 精品一二线国产| 91精品国产欧美一区二区| 一区二区三区日韩欧美| 成人涩涩免费视频| 精品成人在线观看| 日本女优在线视频一区二区| 91成人在线精品| 亚洲欧美一区二区三区久本道91 | 中文字幕欧美国产| 国产一区不卡视频| 欧美v日韩v国产v| 蜜乳av一区二区三区| 欧美一区二区三区在线观看| 亚洲一区二区在线免费看| 色先锋久久av资源部| 综合精品久久久| www.亚洲精品| 亚洲人成在线播放网站岛国| 成人黄色小视频| 国产精品国产精品国产专区不片| 国产成人夜色高潮福利影视| 国产日韩欧美综合在线| 国产成人av在线影院| 国产欧美视频在线观看| 国产高清成人在线|