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

📄 testarea.java

📁 这是一个用Java编写的简单考试系统
💻 JAVA
字号:



import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
class FileName implements FilenameFilter  
{ 
    String str=null;
         FileName (String s)
         {
            str="."+s;
         }
    public  boolean accept(File dir,String name)
         { 
            return name.endsWith(str);
         }              
}
public class TestArea extends JPanel implements ActionListener,ItemListener,Runnable
{
  Choice list=null;                                  
  JTextArea 试题显示区=null,消息区=null;
  JCheckBox box[];                                   
  JButton  提交该题答案,读取下一题,查看分数;
  ReadTestquestion 读取试题=null;                    
  JLabel welcomeLabel=null;                           
  Thread  countTime=null;                           
  long time=0;                                       
  JTextField timeShow=null;                          
  boolean 是否关闭计时器=false,
          是否暂停计时=false;
  JButton 暂停或继续计时=null;
  public TestArea()
  {
    list= new Choice();
    String 当前目录=System.getProperty("user.dir");
    File dir=new File(当前目录);
    FileName fileTxt=new FileName("txt");
    String fileName[]=dir.list(fileTxt);            
    for(int i=0;i<fileName.length;i++) 
        {
          list.add(fileName[i]);
        }
   
    试题显示区=new  JTextArea(15,12);
    试题显示区.setLineWrap(true);                  
    试题显示区.setWrapStyleWord(true);             
    试题显示区.setFont(new Font("TimesRoman",Font.PLAIN,14));
    试题显示区.setForeground(Color.blue);     
    消息区=new  JTextArea(8,8);
    消息区.setForeground(Color.blue);  
    消息区.setLineWrap(true);                 
    消息区.setWrapStyleWord(true); 
   
    countTime=new  Thread(this);                    
    String s[]={"A","B","C","D"};
    box=new JCheckBox[4];
    for(int i=0;i<4;i++)
      {
        box[i]=new JCheckBox(s[i]);
      }
    暂停或继续计时=new JButton("暂停计时");
    暂停或继续计时.addActionListener(this);
    提交该题答案=new JButton("提交该题答案");
    读取下一题=new JButton("读取第一题");
    读取下一题.setForeground(Color.blue);
    提交该题答案.setForeground(Color.blue);
    查看分数=new JButton("查看分数");
    查看分数.setForeground(Color.blue);
    提交该题答案.setEnabled(false);
    提交该题答案.addActionListener(this);
    读取下一题.addActionListener(this);
    查看分数.addActionListener(this); 
    list.addItemListener(this);
    读取试题=new ReadTestquestion();
    JPanel pAddbox=new JPanel();
    for(int i=0;i<4;i++)
      {
        pAddbox.add(box[i]);
      }
    Box  boxH1=Box.createVerticalBox(),   
    boxH2=Box.createVerticalBox(),
    baseBox=Box.createHorizontalBox();    
    boxH1.add(new JLabel("选择试题文件"));
    boxH1.add(list);
    boxH1.add(new JScrollPane(消息区));
    boxH1.add(查看分数);
    timeShow=new JTextField(20);
    timeShow.setHorizontalAlignment(SwingConstants.RIGHT); 
    timeShow.setEditable(false);
    JPanel p1=new JPanel();
    p1.add(new JLabel("剩余时间:"));
    p1.add(timeShow);                      
    p1.add(暂停或继续计时);
    boxH1.add(p1);                   
    boxH2.add(new JLabel("试题内容:"));
    boxH2.add(new JScrollPane(试题显示区));
    JPanel p2=new JPanel();
    p2.add(pAddbox);                       
    p2.add(提交该题答案);
    p2.add(读取下一题);
    boxH2.add(p2); 
    baseBox.add(boxH1);
    baseBox.add(boxH2);
    setLayout(new BorderLayout());
    add(baseBox,BorderLayout.CENTER);
    welcomeLabel=new JLabel("欢迎考试,提高英语水平",JLabel.CENTER);
    welcomeLabel.setFont(new Font("隶书",Font.PLAIN,24));
    welcomeLabel.setForeground(Color.blue);
    add(welcomeLabel,BorderLayout.NORTH);
    
  }
 public void itemStateChanged(ItemEvent e)
  {
     timeShow.setText(null);
     是否关闭计时器=false;
     是否暂停计时=false;
     暂停或继续计时.setText("暂停计时");
     String name=(String)list.getSelectedItem();
     读取试题.setFilename(name);
     读取试题.set完成考试(false);
     time=读取试题.getTime();                   
    if(countTime.isAlive())                     
        {
          是否关闭计时器=true;   
          countTime.interrupt();                
        }
     countTime=new Thread(this);                
     
     消息区.setText(null);
     试题显示区.setText(null);
     读取下一题.setText("读取第一题");
     提交该题答案.setEnabled(false);
     读取下一题.setEnabled(true);
     welcomeLabel.setText("欢迎考试,你选择的试题:"+读取试题.getFilename());
  }
 public void actionPerformed(ActionEvent e)
  {
    if(e.getSource()==读取下一题)
       {
         读取下一题.setText("读取下一题");
         提交该题答案.setEnabled(true);
         String contentTest=读取试题.getTestContent();
         试题显示区.setText(contentTest);
         消息区.setText(null);
         读取下一题.setEnabled(false);
          try {
                 countTime.start();               
              }
          catch(Exception event)
              {
                 
              }
       } 
    if(e.getSource()==提交该题答案)
       {
          读取下一题.setEnabled(true);
          提交该题答案.setEnabled(false);
          String answer="?";
          for(int i=0;i<4;i++)
             {
               if(box[i].isSelected())
                  {
                    answer=box[i].getText();
                    box[i].setSelected(false);
                    break;
                  } 
             }
          读取试题.setSelection(answer);
       }
     if(e.getSource()==查看分数)
       {
         int score=读取试题.getScore();
         String messages=读取试题.getMessages();
         消息区.setText("分数:"+score+"\n"+messages);
       }
     if(e.getSource()==暂停或继续计时)
       {
         if(是否暂停计时==false)
            {  
               暂停或继续计时.setText("继续计时");
               是否暂停计时=true;      
            }
         else if(是否暂停计时==true)
            { 
               暂停或继续计时.setText("暂停计时");
               是否暂停计时=false;   
               countTime.interrupt();  
            }
       }
  }
 public synchronized void run()                    
  {
     while(true)
      {
        if(time<=0)
           {
             是否关闭计时器=true;   
             countTime.interrupt();                
             提交该题答案.setEnabled(false);       
             读取下一题.setEnabled(false);         
             timeShow.setText("用时尽,考试结束");
           }
        else if(读取试题.get完成考试())
           {
             是否关闭计时器=true; 
             timeShow.setText("考试效果:分数*剩余时间(秒)="+1.0*读取试题.getScore()*(time/1000)); 
             countTime.interrupt();                
             提交该题答案.setEnabled(false);       
             读取下一题.setEnabled(false);         
             
           }
        else if(time>=1)
          {
            time=time-1000;
            long leftTime=time/1000;               
            long leftHour=leftTime/3600;           
            long leftMinute=(leftTime-leftHour*3600)/60;
            long leftSecond=leftTime%60;           
            timeShow.setText(""+leftHour+"小时"+leftMinute+"分"+leftSecond+"秒");
          }
         try
          {
            Thread.sleep(1000);                    
          }
         catch(InterruptedException ee)
          {
             if(是否关闭计时器==true)
               return ;                            
          }
         while(是否暂停计时==true)
          {
             try
                {
                    wait();                       
                }
            catch(InterruptedException ee)
                {
                  if(是否暂停计时==false)
                     {
                        notifyAll();             
                     } 
                }
          }
      }
  }
 
} 

⌨️ 快捷键说明

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