📄 pro1panel.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 + -