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

📄 diagframe.java

📁 简易聊天
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.Date;

//本窗口大小应该不可调
class DiagFrame extends JFrame{

	ClientFrame clientframe;
	String RegName;
	String UserName;
	boolean Online;
	User myself,myFriend;
/****************************************************以下组件****************************************************/       
	Container contentPane;   	//顶层容器

	JScrollPane revScroll;   	//显示接收到消息的滚动条
	JTextArea revText;		//显示接收到消息的文本框

	JScrollPane revScroll1;	//test
	JTextField revText1;	//test


	JScrollPane SendScroll;  	//显示发送的消息的滚动条
	JTextArea sendText;		//显示发送的消息的文本框

	JScrollPane DestanceScroll;	//显示对方用户资料的滚动条
	JTextArea DestanceText;		//显示对方用户资料的文本框

	JScrollPane CurrentScroll;	//显示自己用户资料的滚动条
	JTextArea CurrentText;		//显示自己用户资料的文本框

	JButton OKBtn;			//发送按钮
	JButton cancelBtn;		//取消按钮
/****************************************************以上组件****************************************************/
/*
	public DiagFrame(ClientFrame clientframe,String RegName,String UserName,boolean Online){
		this(UserName);
		this.clientframe=clientframe;
		this.RegName=RegName;
		this.UserName=UserName;
		this.Online=Online;
	}
*/
	public DiagFrame(ClientFrame clientframe,User myself,User myFriend,boolean Online){
		this(myself,myFriend);
		this.clientframe=clientframe;
		this.myself=myself;
		this.myFriend=myFriend;
		this.RegName=myFriend.getRegName();
		this.UserName=myFriend.getUserName();
		this.Online=Online;
	}


	public DiagFrame(User myself,User myFriend){
		
		setTitle("与"+myFriend.getUserName()+"对话中");

		contentPane=this.getContentPane();	//获取顶层容器
		contentPane.setLayout(new GridBagLayout());

		revText=new JTextArea();
		revText.setLineWrap(true);
		//revText.setOpaque(false);
		revScroll=new JScrollPane(revText);
		//revText.setEnabled(false);
		revText.setEditable(false);		   	
		revText.setBorder(BorderFactory.createTitledBorder("Message of received:"));
		
		//revScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		//revScroll.setWheelScrollingEnabled(true);//自动响应鼠标滚轮


		revText1=new JTextField(15);
		revScroll1=new JScrollPane(revText1);
		//revText1.setEditable(false);		   	
		//revText1.setBorder(BorderFactory.createTitledBorder("Message of received:"));
		
		

		sendText=new JTextArea();
		sendText.setLineWrap(true);	
		sendText.setBorder(BorderFactory.createTitledBorder("Message of sended:"));
		SendScroll=new JScrollPane(sendText); 
		SendScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		//SendScroll.setWheelScrollingEnabled(true);//自动响应鼠标滚轮

		DestanceText=new JTextArea();
		DestanceText.setEditable(false);
		DestanceScroll=new JScrollPane(DestanceText);
		DestanceText.setBorder(BorderFactory.createTitledBorder("Info of my friend:"));
		DestanceScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		//DestanceScroll.setWheelScrollingEnabled(true);//自动响应鼠标滚轮
		String sex=myFriend.getSex()?"男":"女";
DestanceText.append("姓名: "+myFriend.getUserName()+"\n"+"性别:"+sex+"\n"+"职位:"+myFriend.getJob()+"\n"+"邮箱:"+myFriend.getEMail()+"\n"+"电话:"+myFriend.getTel()+"\n"+"IP:"+myFriend.getIpAddr()+"\n");

		CurrentText=new JTextArea();
		CurrentText.setEditable(false);
		CurrentScroll=new JScrollPane(CurrentText);
		CurrentText.setBorder(BorderFactory.createTitledBorder("Info of myself:"));
		CurrentScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		//CurrentScroll.setWheelScrollingEnabled(true);//自动响应鼠标滚轮
		sex=myself.getSex()?"男":"女";
CurrentText.append("姓名: "+myself.getUserName()+"\n"+"性别:"+sex+"\n"+"职位:"+myself.getJob()+"\n"+"邮箱:"+myself.getEMail()+"\n"+"电话:"+myself.getTel()+"\n"+"IP:"+myself.getIpAddr()+"\n");


		OKBtn=new JButton("Send");
		cancelBtn=new JButton("Cancle");
		
		OKBtn.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				Message msg;

				msg=new Message("",RegName,sendText.getText().trim(),System.currentTimeMillis());

				RealTimeMsgReceiver(msg);

				//revText.append((new Date(System.currentTimeMillis())).toLocaleString());
				//revText.append("\n");
				//revText.append(sendText.getText().trim());
				//revText.append("\n");
				sendText.setText("");

System.out.println("准备调用clientframe.send(msg,Online)");

				clientframe.send(msg,Online);
			}
		});

		cancelBtn.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				sendText.setText("");
			}//public void actionPerformed(ActionEvent e)
		});




		LayoutUtil.add(contentPane,SendScroll,GridBagConstraints.BOTH,GridBagConstraints.CENTER,1,1,0,0,4,4);
		LayoutUtil.add(contentPane,revScroll,GridBagConstraints.BOTH,GridBagConstraints.CENTER,1,1,0,4,4,4);
		LayoutUtil.add(contentPane,DestanceScroll,GridBagConstraints.BOTH,GridBagConstraints.CENTER,1,1,4,0,3,3);
		LayoutUtil.add(contentPane,CurrentScroll,GridBagConstraints.BOTH,GridBagConstraints.CENTER,1,1,4,4,3,3);


		LayoutUtil.add(contentPane,OKBtn,GridBagConstraints.NONE,GridBagConstraints.CENTER,1,1,2,8,1,1,new Insets(10,0,0,0));
		LayoutUtil.add(contentPane,cancelBtn,GridBagConstraints.NONE,GridBagConstraints.CENTER,1,1,4,8,1,1,new Insets(10,0,0,0));
		//LayoutUtil.add(contentPane,revScroll1,GridBagConstraints.NONE,GridBagConstraints.CENTER,1,1,5,8,2,1,new Insets(10,0,0,0));
		
		//窗体居中设置
        //Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        //Dimension frameSize = this.getSize();
        //if (frameSize.height > screenSize.height) {
        //    frameSize.height = screenSize.height;
        //}
        //if (frameSize.width > screenSize.width) {
        //    frameSize.width = screenSize.width;
        //}
        //this.setLocation((screenSize.width - frameSize.width) / 2,
        //                  (screenSize.height - frameSize.height) / 2);

	setSize(400,400);
	setResizable(false);
	//setVisible(true);
	addWindowListener(new WindowAdapter(){

			public void windowClosing(WindowEvent e){
				DiagFrame.this.setVisible(false);			
			}//public void windowClosing(WindowEvent e)

			
			public void windowActivated(WindowEvent e){
				if(Online){
					OKBtn.setText("Send");
				}else{
					OKBtn.setText("message");
				}


//revText.setFocusable(true);
//revText.show(true);
//revText.show();
//revText.setVisible(true);
System.out.println("in windowActivated");
System.out.println("revText.isShowing()="+revText.isShowing());
System.out.println("revText.isDisplayable()="+revText.isDisplayable());
System.out.println("revScroll.isShowing()="+revScroll.isShowing());
System.out.println("revScroll.isDisplayable()="+revScroll.isDisplayable());




			}//public void windowActivated(WindowEvent e)

			public void windowDeactivated(WindowEvent e){
				Online=clientframe.isOnline(RegName);
			}//public void windowDeactivated(WindowEvent e)

	});//addWindowListener(new WindowAdapter(){

	}//DiagFrame()

public void RealTimeMsgReceiver(Message msg){

System.out.println("in DiagFrame RealTimeMsgReceiver()正在交付即时信息");

		revText.append(msg.getstrLocaleDate()+"   "+msg.getfromName());
		revText.append("\n");
		revText.append(msg.getMsg());
		revText.append("\n");

		//revText1.setText(/*msg.getstrDate()+"   "+*/msg.getfromName()/*+"   "+msg.getMsg()*/);
		//revText1.append("\n");
		//revText1.append();
		//revText1.append("\n");

System.out.println("in DiagFrame RealTimeMsgReceiver()\n即时信息已经成功添加到revText");
System.out.println("revText.isShowing()="+revText.isShowing());
System.out.println("revText.isDisplayable()="+revText.isDisplayable());
//System.out.println("length of revText=\n"+revText.getText().length());
System.out.println("Strings in revText=\n"+revText.getText());
//System.out.println(revText.getCaretPosition());


}//public void RealTimeMsgReceiver(Message msg)

	public static void main(String args[]){
		//new DiagFrame("服务器").setVisible(true);
	}//main()


	
}//class DiagFrame extends JFrame

⌨️ 快捷键说明

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