?? 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 + -