Timer.java文件packagecommon;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.swing.Timer;importjavax.swing.JTextField;publicclassTime{Datenow;Timertimer;JTextFieldlbl;publicTime(JTextFieldl){lbl=l;timer=newTimer(1000,newActionListener(){publicvoidactionPerformed(ActionEvente){now=newDate(now.getTime()-1000);SimpleDateFormatformatter=newSimpleDateFormat(HH:mm:ss);lbl.setText(formatter.format(now));}});}@SuppressWarnings(deprecation)publicvoidtime_start(){//lbl.setText(00:00:10);now=newDate();now.setHours(0);now.setMinutes(0);now.setSeconds(10);timer.start();}publicvoidtime_stop(){timer.stop();lbl.setText(00:00:10);}publicvoidtime_restart();timer.stop();this.time_start();}}ARQ.java文件importjava.awt.*;importjava.awt.event.*;importjavax.swing.BoxLayout;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JButton;importjavax.swing.JScrollPane;importjavax.swing.JTextField;importjavax.swing.JPanel;importjavax.swing.JRadioButton;importjavax.swing.ButtonGroup;importjavax.swing.JTable;importjavax.swing.event.DocumentEvent;importjavax.swing.event.DocumentListener;importjavax.swing.table.*;importjavax.swing.text.Document;importjava.io.FileWriter;importjava.io.IOException;importcommon.Time;publicclassARQextendsJFrame{privatestaticfinallongserialVersionUID=-5437589209629747957L;privateintNUM;privateTimeT;privateJTextField[]status;privateJButtonb;privateJRadioButton[]r;DefaultTableModelm_data;JTablem_view;FileWriterf1;FileWriterf2;FileWriterf3;publicARQ()throwsIOException{super(ARQ);NUM=0;Containerc=getContentPane();c.setLayout(newFlowLayout());JPanel[]P=newJPanel[2];P[0]=newJPanel();P[0].setLayout(newBoxLayout(P[0],BoxLayout.X_AXIS));c.add(P[0]);P[1]=newJPanel();c.add(P[1]);JPanel[]Q=newJPanel[2];Q[0]=newJPanel();Q[0].setLayout(newBoxLayout(Q[0],BoxLayout.Y_AXIS));P[0].add(Q[0]);Q[1]=newJPanel();Q[1].setLayout(newBoxLayout(Q[1],BoxLayout.Y_AXIS));P[0].add(Q[1]);JPanel[]R=newJPanel[4];R[0]=newJPanel();R[0].setLayout(newFlowLayout(FlowLayout.LEFT));Q[0].add(R[0]);R[1]=newJPanel();R[1].setLayout(newFlowLayout(FlowLayout.LEFT));Q[0].add(R[1]);R[2]=newJPanel();R[2].setLayout(newFlowLayout(FlowLayout.LEFT));Q[0].add(R[2]);R[3]=newJPanel();R[3].setLayout(newFlowLayout(FlowLayout.CENTER));Q[0].add(R[3]);//////////////////////////////文件f1=newFileWriter(f1.txt,true);f2=newFileWriter(f2.txt,true);f3=newFileWriter(f3.txt,true);//////数据发送状态JTextField[]s={newJTextField(新数据,7),newJTextField(重发,7),newJTextField(倒计时,4),newJTextField(00:00:10,10),newJTextField(数据,4),newJTextField(,15)};//数据发送住状态status=s;status[0].setEditable(false);status[1].setEditable(false);status[2].setEditable(false);status[4].setEditable(false);status[1].setEnabled(false);JLabell=newJLabel(状态:);R[0].add(l);R[0].add(status[0]);R[1].add(status[2]);R[1].add(status[3]);R[2].add(status[4]);R[2].add(status[5]);b=newJButton(发送);b.setEnabled(false);R[3].add(b);JLabell1=newJLabel(选择操作);Q[1].add(l1);/////选择操作JRadioButton[]r1={newJRadioButton(ACK),newJRadioButton(NAK),newJRadioButton(不处理),newJRadioButton(初始)};r=r1;ButtonGrouprg=newButtonGroup();for(inti=0;ir.length-1;i++){Q[1].add(r[i]);rg.add(r[i]);}rg.add(r[3]);///////////////////////////////////////////////////////////////////////////////////////////////////////数据收发住状态列表m_data=newDefaultTableModel();m_view=newJTable(m_data);m_view.setPreferredScrollableViewportSize(newDimension(300,230));////表格大小m_view.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);JScrollPanesPane=newJScrollPane(m_view);P[1].add(sPane);T=newTime(status[3]);///发送操作b.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){T.time_start();newtore();status[0].setText(新数据);r[3].setSelected(true);}});/////////////////////////时间显示监听Documentdt=status[3].getDocument();dt.addDocumentListener(newDocumentListener(){publicvoidchangedUpdate(DocumentEvente){};publicvoidinsertUpdate(DocumentEvente){if(status[3].getText().toString().equals(00:00:00)){T.time_restart();newtore();Strings=status[5].getText().toString();mb_addRow(s,超时,重发,);}}publicvoidremoveUpdate(DocumentEvente){};});//////////////////////输入监听Documentdt1=status[5].getDocument();dt1.addDocumentListener(newDocumentListener(){publicvoidchangedUpdate(DocumentEvente){}publicvoidinsertUpdate(DocumentEvente){if(!status[5].getText().toString().equals())b.setEnabled(true);};publicvoidremoveUpdate(DocumentEvente){if(status[5].getText().toString().equals())b.setEnabled(false);};});//////////////////////////按钮监听r[0].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){T.time_stop();retonew();status[5].setText();status[5].requestFocus();}});r[0].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Strings=status[5].getText().toString();NUM++;mb_addRow(s,ACK,接受+NUM,s);//////NUM+int装化为string}});r[1].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){T.time_restart();newtore();}});r[1].addActionListener(newActionListener(){publicvoidacti