📄 question.java
字号:
package com.exam;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Question implements ActionListener
{
private JFrame frame;
private Container contentPane;
private JButton startBtn,beforeBtn,nextBtn,exitBtn;
private JTextField anwserText;
private Timer timer;
private JLabel timeLbl,questionLbl;
private int indext=1;//判断题目是序号
private ManageQuestion mq=new ManageQuestion();
private int find=10;
private int flat;
private String x;
public Question()
{
frame=new JFrame("答题界面");
frame.setBounds(100,100,600,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
contentPane=frame.getContentPane();
initGUI();
}
//*****************************************************************上
public void initGUI()
{
//整体设计按钮
contentPane.setLayout(new BorderLayout());
JPanel p1=new JPanel(new FlowLayout(FlowLayout.LEFT));
// p1.setBackground(Color.pink);
questionLbl=new JLabel("问题未启动,请点击start");
p1.add(new JLabel("问题是:"));
p1.add(questionLbl);
JPanel p2=new JPanel(new FlowLayout(FlowLayout.LEFT));
// p2.setBackground(Color.pink);
anwserText=new JTextField(10);
p2.add(new JLabel("答案是:"));
p2.add(anwserText);
JPanel p=new JPanel(new GridLayout(2,1));
p.setBackground(Color.pink);
p.add(p1);
p.add(p2);
startBtn=new JButton("开始");
beforeBtn=new JButton("上一题");
nextBtn=new JButton("下一题");
exitBtn=new JButton("返回");
JPanel p3=new JPanel(new FlowLayout());
// p3.setBackground(Color.pink);
p3.add(startBtn);
p3.add(beforeBtn);
p3.add(nextBtn);
p3.add(exitBtn);
timeLbl=new JLabel("200");
JPanel pp=new JPanel(new FlowLayout(FlowLayout.RIGHT));
// pp.setBackground(Color.pink);
pp.add(new JLabel("计时:"));
pp.add(timeLbl);
contentPane.add(pp,BorderLayout.NORTH);
contentPane.add(p,BorderLayout.CENTER);
contentPane.add(p3,BorderLayout.SOUTH);
//对按钮进行监听
anwserText.addActionListener(this);
startBtn.addActionListener(this);
beforeBtn.addActionListener(this);
nextBtn.addActionListener(this);
exitBtn.addActionListener(this);
timer=new Timer(1000,this);
startBtn.setEnabled(true);
beforeBtn.setEnabled(false);
nextBtn.setEnabled(false);
exitBtn.setEnabled(true);
}
//*****************************************************************下
public void go()
{
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==startBtn)
{
//点击之后在屏幕上显示到记时并启动question和anwser
timer.start();
startBtn.setEnabled(false);
beforeBtn.setEnabled(true);
nextBtn.setEnabled(true);
exitBtn.setEnabled(true);
questionLbl.setText("");
mq.setQuestion();
questionLbl.setText(mq.getQuestion(indext)+" =?");
anwserText.grabFocus();
}
if(e.getSource()==beforeBtn)
{
//点击之后回退到上一个题目
//判断是否有上一个题目如果没有则提示
if(indext==1)
{
questionLbl.setText("操作失误");
}
//如果有的话则显示下一道题目
if(indext>1)
{
indext--;
questionLbl.setText("");
if(indext<=9){
x=anwserText.getText().trim(); //把上一道题目的大案记录到x中
mq.setUserAnswer(x,(indext+1));
}
questionLbl.setText(mq.getQuestion(indext)+" =?"+indext);
anwserText.grabFocus();
x=mq.getUserAnswer(indext);
anwserText.setText(x);
}
}
if(e.getSource()==nextBtn)
{
//点击之后快进到下一个题目
//判断是否答完,如果答完了则进入成绩界面
//如果没有答完则显示下一个题目
if(mq.getId()<=indext&&indext<11)
{
indext++;
if(indext<11&&indext>=2)
{
questionLbl.setText("");
anwserText.grabFocus();
x=anwserText.getText().trim();
mq.setUserAnswer(x,(indext-1));
mq.setQuestion();
questionLbl.setText(mq.getQuestion(indext)+" =?"+indext);
anwserText.setText("");
}
else
{
x=anwserText.getText().trim();
mq.setUserAnswer(x,(indext-1));
questionLbl.setText("题目已经做完了!");
}
}
else
{
if(indext<11&&indext>=1)
{
indext++;
questionLbl.setText("");
if(indext>=1){
x=anwserText.getText().trim(); //把上一道题目的大案记录到x中
mq.setUserAnswer(x,(indext-1));
}
anwserText.setText("");
anwserText.grabFocus();
String s=mq.getUserAnswer(indext);
anwserText.setText(s);
questionLbl.setText(mq.getQuestion(indext)+" =?"+indext);
}
}
}
if(e.getSource()==exitBtn)
{
int t=Integer.parseInt(timeLbl.getText().trim());
//回到上一界面1时间小于X出现另一界面提示“如果退出成绩可能为零”
if(t>=5)
{
(new InformFrame(2,"如果退出成绩可能为零,真的要退出吗?")).go();
}
//2时间大于X到另一界面提示“请检查,如果确定无误再选择退出"
else
(new InformFrame(2,"请检查,如果确定无误再选择退出")).go();
}
if(e.getSource()==timer)
{
int v=Integer.parseInt(timeLbl.getText().trim());
v--;
if(v==5)
{
(new InformFrame(1,"时间还剩下5秒钟")).go();
}
if(v==0)
{
timer.stop();
startBtn.setEnabled(false);
beforeBtn.setEnabled(false);
nextBtn.setEnabled(false);
timeLbl.setText("20");
frame.dispose();
(new Answer()).go();
}
timeLbl.setText(v+"");
}
}
//__________________________________________________________________
//专门用于生产用户提示的各种信息框
class InformFrame
{
private JFrame frame;
private Container contentPane;
private JLabel lbl;
private JButton okBtn,exitBtn;
private int id;
private String informText;
public InformFrame(int id,String informText)
{
frame=new JFrame("信息提示!");
frame.setBounds(200,500,300,170);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置大小可不可以改变
frame.setResizable(false);
contentPane=frame.getContentPane();
this.id=id;
this.informText=informText;
initGUI();
}
public void initGUI()
{
contentPane.setLayout(new BorderLayout());
lbl=new JLabel(informText);
contentPane.add(lbl,BorderLayout.CENTER);
contentPane.add(getPanel(id),BorderLayout.SOUTH);
}
//生产加载到contentPane中SOUTH区域的JPanel
public JPanel getPanel(int id)
{
JPanel p=null;
switch(id)
{
case 1:{
okBtn=new JButton("确定");
p=new JPanel(new FlowLayout());
p.add(okBtn);
okBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.dispose();
}
});
}break;
case 2:{
okBtn=new JButton("是");
exitBtn=new JButton("否");
p=new JPanel(new FlowLayout());
p.add(okBtn);
p.add(exitBtn);
okBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
exitBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.dispose();
}
});
}break;
}
return p;
}
public void go()
{
frame.setVisible(true);
}
}
//#######################################################################下
public static void main(String args[])
{
(new Question()).go();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -