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

📄 pro1panel.java

📁 total是最后的版本。包括的全是最新的物理层和数据链路层。另外还有pro1和pro2的打包程序和调用它们形成的各自的界面程序
💻 JAVA
字号:
// Pro1Panel.java
package chq;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import chq.Pro1;
import chq.frame;

public class Pro1Panel extends JPanel implements ActionListener{ 
   	//private Container c;
   	private GridBagLayout gridbaglayout_s,gridbaglayout_r;
   	private GridBagConstraints constraints_s,constraints_r; 
   	
   	private JPanel port,sRPanel,senderPanel,Pfn,framingPanel,Ftp,slog,
   		receiverPanel,Ffp,unframingPanel,Ptn,rlog;
   	
   	private JLabel addressLabel,portLabel,frametypelab;
   	private JLabel sPfnLabel,FrameChangelab,Ftplab,
   		rFfpLabel,unFrameChangelab,rPtnlab;
   
   	private JTextField addressField,portField,sPfnField,sKFieldStr,
   		sSFieldStr,sAFieldStr,sIFieldStr,sKFieldBits,sSFieldBits,
   		sAFieldBits,sIFieldBits,sFtpField;
   	private JTextField rFfpField,rKFieldStr,rSFieldStr,rAFieldStr,
   		rIFieldStr,rKFieldBits,rSFieldBits,rAFieldBits,rIFieldBits,
   		rPtnField;
		
	private JTextArea slogArea,rlogArea;
	
	public Pro1 p1;
	public frame fr,fs;
		
	// set up GUI
	public Pro1Panel()
	{
      	//super( "Pro1Panel" );
		this.setLayout(new BorderLayout());
		
		//JPanel port,
		port=new JPanel();
		    	      	
      	addressLabel=new JLabel("Loacl Address:");
      	port.add(addressLabel);
      	addressField=new JTextField(20);
      	addressField.setEditable(false);
      	port.add(addressField);
      	
      	port.add(Box.createHorizontalStrut(10));
      	
      	portLabel=new JLabel("Local Socket Port:");
      	port.add(portLabel);
      	portField=new JTextField(3);
      	portField.setEditable(false);
      	port.add(portField);
      	
      	this.add(port,BorderLayout.NORTH);
		
		//sRPanel
		sRPanel = new JPanel();
		sRPanel.setLayout(new GridLayout(1,2));		
		
		//senderPanel 
		senderPanel = new JPanel();
		senderPanel.setLayout(new BoxLayout(senderPanel,BoxLayout.Y_AXIS));
      	
      	//JPanel Pfn
      	Pfn=new JPanel();
      	sPfnLabel=new JLabel("Data from Network :");
      	Pfn.add(sPfnLabel);
      	//Pfn.add(Box.createHorizontalStrut(5));
      	
      	sPfnField=new JTextField("input data for translating",13);
      	sPfnField.addActionListener(this);
      	Pfn.add(sPfnField);
      	
      	senderPanel.add(Pfn);
      	
      	//framingPanel with title
      	framingPanel = new JPanel();
      
      	gridbaglayout_s = new GridBagLayout();
      	framingPanel.setLayout(gridbaglayout_s);   

      	//instantiate gridbag constraints
     	constraints_s = new GridBagConstraints();
     	constraints_s.fill = GridBagConstraints.BOTH;
      	      	
      	//framing String
      	frametypelab=new JLabel("kind      seq       ack       infomation   ");
      	addComponent_f(frametypelab,0,0,4,1);
      	
      	sKFieldStr=new JTextField(4); //addComponent(x,y,with,height)
      	sKFieldStr.setEditable(false);      	
      	addComponent_f( sKFieldStr,0,1,1,1);
      	
      	sSFieldStr=new JTextField(4);
      	sSFieldStr.setEditable(false);      	
      	addComponent_f( sSFieldStr,1,1,1,1);
      	
      	sAFieldStr=new JTextField(4);
      	sAFieldStr.setEditable(false);      	
      	addComponent_f( sAFieldStr,2,1,1,1);
      	
      	sIFieldStr=new JTextField(12);
      	sIFieldStr.setEditable(false);      	
      	addComponent_f( sIFieldStr,3,1,1,1);
      	
      	//framing bits
      	FrameChangelab=new JLabel("change frame from Stirng to bits");
      	addComponent_f( FrameChangelab,0,2,4,1);
      	
      	sKFieldBits=new JTextField(4);
      	sKFieldBits.setEditable(false);      	
      	addComponent_f( sKFieldBits,0,3,1,1);
      	
      	sSFieldBits=new JTextField(4);
      	sSFieldBits.setEditable(false);      	
      	addComponent_f( sSFieldBits,1,3,1,1);
      	
      	sAFieldBits=new JTextField(4);
      	sAFieldBits.setEditable(false);      	
      	addComponent_f( sAFieldBits,2,3,1,1);
      	
      	sIFieldBits=new JTextField(12);
      	sIFieldBits.setEditable(false);      	
      	addComponent_f( sIFieldBits,3,3,1,1);
      	
      	Border loweredetched_s=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
      	TitledBorder titleborder_s=BorderFactory.createTitledBorder(loweredetched_s,"framing");
      	framingPanel.setBorder(titleborder_s);
      	
      	senderPanel.add(framingPanel);
      	//end of framingPanel
      	
      	//JPanel Ftp
		Ftp=new JPanel();
		
		FlowLayout flowlayout_s=new FlowLayout();
		Ftp.setLayout(flowlayout_s);
		
      	Ftplab=new JLabel("Frame handed down to the PhysicalLayer: ",SwingConstants.LEFT);
      	Ftp.add(Ftplab);
      	Ftp.add(Box.createHorizontalStrut(100));
      	
      	sFtpField=new JTextField(24);
      	sFtpField.setEditable(false);
      	Ftp.add(sFtpField);
      	Ftp.add(Box.createRigidArea(new Dimension(400,50)));
      	
      	senderPanel.add(Ftp);  //end of JPanel Ftp
      	
      	//JPanel slog
      	slog=new JPanel();
      	
      	String s="Log: Protocol 1:Sender\n";
      	slogArea=new JTextArea(s,4,26);
      	slog.add(new JScrollPane(slogArea));
      	
      	Border loweredetched2_s=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
      	TitledBorder titleborder2_s=BorderFactory.createTitledBorder(loweredetched2_s,"log");
      	slog.setBorder(titleborder2_s);// Border of log_s
      	
      	senderPanel.add(slog);
      	//End of JPanel log
      	
      	Border raisedetched=BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
      	TitledBorder titleborder3_s=BorderFactory.createTitledBorder(raisedetched,"Sender");
      	senderPanel.setBorder(titleborder3_s);//Border of senderPanel
      	      	      	
      	sRPanel.add(senderPanel); //append senderPanel to c
       	//End of SenderPanel
       	
       	
       	
       	//ReceiverPanel
       	receiverPanel = new JPanel();
		receiverPanel.setLayout(new BoxLayout(receiverPanel,BoxLayout.Y_AXIS));
      	
      	//JPanel Ffp
      	Ffp=new JPanel();
      	rFfpLabel=new JLabel("Frame received from Physical-Layer :");
      	Ffp.add(rFfpLabel);
      	Ffp.add(Box.createHorizontalStrut(130));
      	
      	rFfpField=new JTextField(20);
      	rFfpField.setEditable(false);
      	Ffp.add(rFfpField);
      	Ffp.add(Box.createRigidArea(new Dimension(400,50)));
      	
      	receiverPanel.add(Ffp);
      	
      	//unframingPanel with title
      	unframingPanel = new JPanel();
      
      	gridbaglayout_r = new GridBagLayout();
      	unframingPanel.setLayout(gridbaglayout_r);   

      	//instantiate gridbag constraints
     	constraints_r = new GridBagConstraints();
     	constraints_r.fill = GridBagConstraints.BOTH;
      	      	
      	//unframing String
      	frametypelab=new JLabel("kind      seq       ack       infomation   ");
      	addComponent_uf( frametypelab,0,0,4,1);
      	
      	rKFieldBits=new JTextField(4);
      	rKFieldBits.setEditable(false);      	
      	addComponent_uf( rKFieldBits,0,1,1,1);
      	
      	rSFieldBits=new JTextField(4);
      	rSFieldBits.setEditable(false);      	
      	addComponent_uf( rSFieldBits,1,1,1,1);
      	
      	rAFieldBits=new JTextField(4);
      	rAFieldBits.setEditable(false);      	
      	addComponent_uf( rAFieldBits,2,1,1,1);
      	
      	rIFieldBits=new JTextField(12);
      	rIFieldBits.setEditable(false);      	
      	addComponent_uf( rIFieldBits,3,1,1,1);
      	
      	//unframing bits
      	unFrameChangelab=new JLabel("change frame content from bits to String");
      	addComponent_uf( unFrameChangelab,0,2,4,1);
      	
      	rKFieldStr=new JTextField(4);
      	rKFieldStr.setEditable(false);      	
      	addComponent_uf( rKFieldStr,0,3,1,1);
      	
      	rSFieldStr=new JTextField(4);
      	rSFieldStr.setEditable(false);      	
      	addComponent_uf( rSFieldStr,1,3,1,1);
      	
      	rAFieldStr=new JTextField(4);
      	rAFieldStr.setEditable(false);      	
      	addComponent_uf( rAFieldStr,2,3,1,1);
      	
      	rIFieldStr=new JTextField(12);
      	rIFieldStr.setEditable(false);      	
      	addComponent_uf( rIFieldStr,3,3,1,1);
      	
      	Border loweredetched_r=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
      	TitledBorder titleborder_r=BorderFactory.createTitledBorder(loweredetched_r,"unframing");
      	unframingPanel.setBorder(titleborder_r);
      	
      	receiverPanel.add(unframingPanel);
      	//end of unframingPanel
      	
      	//JPanel Ptn
		Ptn=new JPanel();
		
		FlowLayout flowlayout_r=new FlowLayout();
		Ptn.setLayout(flowlayout_r);
		
      	rPtnlab=new JLabel("Packet to the NetworkLayer:",SwingConstants.LEFT);
      	Ptn.add(rPtnlab);
      	//Ptn.add(Box.createHorizontalStrut(110));
      	      	
      	rPtnField=new JTextField(13);
      	rPtnField.setEditable(false);
      	Ptn.add(rPtnField);
      	//Ptn.add(Box.createRigidArea(new Dimension(400,50)));
      	      	
      	receiverPanel.add(Ptn);  //end of JPanel Ftp
      	
      	//JPanel log
      	rlog=new JPanel();
      	
      	String rlogstring="Log: Protocol 1:Receiver\n";
      	rlogArea=new JTextArea(rlogstring,4,26);
      	rlog.add(new JScrollPane(rlogArea));
      	
      	Border loweredetched2_r=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
      	TitledBorder titleborder2_r=BorderFactory.createTitledBorder(loweredetched2_r,"log");
      	rlog.setBorder(titleborder2_r);
      	
      	receiverPanel.add(rlog);  //End of JPanel log
      	
      	TitledBorder titleborder3_r=BorderFactory.createTitledBorder(raisedetched,"Receiver");
      	receiverPanel.setBorder(titleborder3_r);//Border of senderPanel
      	
       	sRPanel.add(receiverPanel);//append receiverPanel to Container
       	//End of receiverPanel
       	
       	
       	this.add(sRPanel,BorderLayout.CENTER);
      	//setSize(700,450);
      	//setVisible( true );
      	//end of the Container c
      	
      	p1=new Pro1();
      	addressField.setText(p1.datalink.phy.getLocalAddress());
      	portField.setText(Integer.toString(p1.datalink.phy.getLocalPort()));
      	
      	//receiving();
	} // end constructor SenderPanel
	
   // method to set constraints on. addComponent(x,y,with,height)
   	private void addComponent_f( Component component,int column, 
   			int row,int width, int height )
   	{
      // set gridx and gridy 
      	constraints_s.gridx = column;
      	constraints_s.gridy = row;

      	// set gridwidth and gridheight
      	constraints_s.gridwidth = width;   
      	constraints_s.gridheight = height;

      	// set constraints and add component
      	gridbaglayout_s.setConstraints( component, constraints_s );  
      	framingPanel.add( component );      
   	}

	private void addComponent_uf( Component component,
      			int column, int row, int width, int height )
   	{
      // set gridx and gridy 
      	constraints_r.gridx = column;
      	constraints_r.gridy = row;

      	// set gridwidth and gridheight
      	constraints_r.gridwidth = width;   
      	constraints_r.gridheight = height;

      	// set constraints and add component
      	gridbaglayout_r.setConstraints( component, constraints_r );  
      	unframingPanel.add( component );      
   	}
   	
   	public void receiving(){
		while(true){
      		fr=new frame();
   			fr=p1.receiving();
   			
   			rFfpField.setText(fr.getReceivedFrame());
   			
   			rKFieldBits.setText(fr.kindbits);
   			rSFieldBits.setText(fr.seqbits);
   			rAFieldBits.setText(fr.ackbits);
   			rIFieldBits.setText(fr.infobits);
   			
   			rKFieldStr.setText(fr.kind);
   			rSFieldStr.setText(Integer.toString(fr.seq));
   			rAFieldStr.setText(Integer.toString(fr.ack));
   			rIFieldStr.setText(fr.info);
			rPtnField.setText(fr.info);
   			
   			rlogArea.append("The oringinal frame from PhysicalLayer : \n"
   				+fr.getReceivedFrame()+"\nshowFramebits_r:\n"+
   				fr.showFramebits()+"\nshowFrameString_r:\n"+
   				fr.showFrameString()+"\nData translated to NetworkLayer:"
   				+fr.info+"\n");
   			rlogArea.setCaretPosition(rlogArea.getText().length());
		}//end of while
	}   	

	public void actionPerformed(ActionEvent e)
   	{
   		//String s="";
   		if(e.getSource()==sPfnField)
   			{String s=e.getActionCommand();
   			
   			String aimaddress=
				JOptionPane.showInputDialog("Enter Aim IP address","192.168.1.125");
      		int aimport=
    			Integer.parseInt(JOptionPane.showInputDialog("Enter Aim socketnum"));	
    
        	fs=new frame();
        	fs=p1.sending(aimaddress,aimport,s);  //call for sender1 function
    		
    		sKFieldStr.setText(fs.kind);
    		sSFieldStr.setText(Integer.toString(fs.seq));
    		sAFieldStr.setText(Integer.toString(fs.ack));
    		sIFieldStr.setText(fs.info);
    		
    		sKFieldBits.setText(fs.kindbits);
    		sSFieldBits.setText(fs.seqbits);
    		sAFieldBits.setText(fs.ackbits);
			sIFieldBits.setText(fs.infobits);
			
			sFtpField.setText(fs.getFormedFrame());
    		
    		slogArea.append("Packet from NetworkLayer containing: "
    				+s+"\nshowFramebits:\n"+fs.showFramebits()+
    				"\nData handed down to Physical_Layer is:\n"+
    				fs.getFormedFrame()+"\n");
    		slogArea.setCaretPosition(slogArea.getText().length());
			} //end of if
   	}
   	
} // end class Pro1Panel

⌨️ 快捷键说明

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