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

📄 chatpanel.java

📁 java编写的一个网络象棋,通过对方ip连接,开始游戏,同时可以进行聊天,聊天部分通过线程实现,可以同时进行多个会话.
💻 JAVA
字号:
package chat;

import java.awt.event.*;
import java.util.GregorianCalendar;
import cchess.ChessApp;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import net.*;

public class ChatPanel extends JPanel{
	
	JTextArea inputArea ;
	
	JList talkArea ;
	DefaultListModel mode;
	
	JScrollPane scrollPane;
	
	JButton sendButton = new JButton("发送");
	JButton cancelButton = new JButton("取消");
	
	
	Net netSpeaker;
	
	public ChatPanel(Net net){
		System.out.println("ChatPanel");
		netSpeaker = net;

		setLayout(null);
		addText1();
		addText2();
		addSendButton();
		addCancelButton();
	}
	
	private void addText1(){
		
	     mode = new DefaultListModel();  
	     talkArea = new JList(mode);  //构造一个 JList,使其使用指定的非 null 模型显示元素。
	     talkArea.setFixedCellWidth(330);           //设置列表中每个单元的宽度。
	     talkArea.setFixedCellHeight(20);          //设置列表中每个单元的高度
		
		scrollPane = new JScrollPane();
		scrollPane.setComponentOrientation(java.awt.ComponentOrientation.UNKNOWN);
		scrollPane.getViewport().setView(talkArea);
		scrollPane.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); 
		scrollPane.setBounds(ChessApp.getX(5),ChessApp.getY(5),ChessApp.getX(310),ChessApp.getY(380));
		this.add(scrollPane);
	}

	private void addText2(){
		inputArea = new JTextArea("哈哈");
		inputArea.requestFocusInWindow();
		inputArea.addKeyListener(new KeyAdapter(){
			public void keyPressed(KeyEvent e){
				if(e.getKeyCode()==KeyEvent.VK_ENTER)
					sendChatMsg();
			}
		});
		scrollPane = new JScrollPane();
		scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		scrollPane.getViewport().setView(inputArea);
		scrollPane.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); 
		scrollPane.setBounds(ChessApp.getX(5),ChessApp.getY(400),ChessApp.getX(310),ChessApp.getY(120));
		this.add(scrollPane);
	}

	private void addSendButton(){
		this.add(sendButton);
		sendButton.setBounds(ChessApp.getX(170),ChessApp.getY(530),ChessApp.getX(60),ChessApp.getY(25));
		sendButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent okb){
				sendChatMsg();
			}
		});
	}

	private void addCancelButton(){
		this.add(cancelButton);
		cancelButton.setBounds(ChessApp.getX(253),ChessApp.getY(530),ChessApp.getX(60),ChessApp.getY(25));
		cancelButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ceb){
				inputArea.setText(null);
			}
		});
	}
	
	private void sendChatMsg(){
		if(Net.hasConnected){
			if(inputArea.getText().equals("")){
				JOptionPane.showMessageDialog(null,"   靠,不要发空信息!");
				return;
			}
				
			String textInput = inputArea.getText();
			inputArea.setText(null);
			String s = textInput+"\n";
			
			GregorianCalendar time = new GregorianCalendar();
            String timestr = new String("  "+String.valueOf(time.get(GregorianCalendar.AM_PM)*12+time.get(GregorianCalendar.HOUR))+":"+String.valueOf(time.get(GregorianCalendar.MINUTE))
                        +":"+String.valueOf(time.get(GregorianCalendar.SECOND)));  

			netSpeaker.sendMessage("chat#"+Net.getMyAdress()+"   "+timestr+"\n"+s);//发送
									//"chat#"标记该信息为聊天信息
									
			mode.addElement("\n"+Net.getMyAdress()+"   "+timestr);
			mode.addElement(s);
			
			talkArea.ensureIndexIsVisible(mode.getSize()-1);//滚动视口,使指定单元完全可见。
			
			inputArea.requestFocusInWindow();
		}
	}

	public void dealMsg(String msg){
//		String chatmsg = msg.substring(msg.indexOf('#'));
		mode.addElement("\n"+msg);
		talkArea.ensureIndexIsVisible(mode.getSize()-1);//滚动视口,使指定单元完全可见。
		inputArea.requestFocusInWindow();
	}
}

⌨️ 快捷键说明

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