记录一下第一个GUI大程序,也是因为临近交作业的时候才临时抱佛脚,人的潜能总是无限的,因为时间紧而且很多知识都是刚学的,运用不太熟练,多见谅,以后有机会再优化一下代码,这里就放上主要代码(代码不全),若有兴趣可联系。
package ansapp;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;
public class startDemo extends JFrame implements ActionListener {
public startpanel spanel;
public JPanel panel1,panel2,panel3;
JLabel label;
JButton btn1,next,pre,commit;
JTextArea textArea;
JRadioButton abtn,bbtn,cbtn,dbtn;
ButtonGroup buttonGroup;
protected data[] questions;
protected int qnum, now;
startDemo()
{
setVisible(true);
this.setSize(440,320); //设置窗口大小
this.setLocationRelativeTo(null);
setTitle("思政答题系统");
setResizable(false);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//Container container = new Container();
spanel = new startpanel();
btn1 = new JButton();
btn1.setText("开始测试");
btn1.setBounds(160,200,80,60);
btn1.addActionListener(this); //添加监听事件
spanel.add(btn1);
add(spanel, BorderLayout.CENTER);
/
panel1 =new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
label = new JLabel("测试总时间30分钟");
textArea = new JTextArea(20,30);
textArea.setLineWrap(true);
textArea.setEnabled(false);
abtn = new JRadioButton("A");//初始化单选按钮
bbtn = new JRadioButton("B");
cbtn = new JRadioButton("C");
dbtn = new JRadioButton("D");
abtn.addActionListener(this); //添加监听事件
bbtn.addActionListener(this);
cbtn.addActionListener(this);
dbtn.addActionListener(this);
buttonGroup = new ButtonGroup();
buttonGroup.add(abtn);
buttonGroup.add(bbtn);
buttonGroup.add(cbtn);
buttonGroup.add(dbtn);
panel1.add(label);
panel2.add(textArea);
panel3.add(abtn);
panel3.add(bbtn);
panel3.add(cbtn);
panel3.add(dbtn);
pre =new JButton("上一题");
next = new JButton("下一题");
commit = new JButton("提交");
pre.addActionListener(this); //添加监听事件
next.addActionListener(this);
commit.addActionListener(this);
panel3.add(pre);
panel3.add(next);
panel3.add(commit);
}
public void createst() //读入试题
{
Vector<data> qList=null;//创建一个向量列表,用于动态增加试题
data qt;
String s,que="";
try{
FileReader fr = new FileReader("/Users/guyaning/IdeaProjects/javatest/src/data.txt");
BufferedReader br = new BufferedReader(fr);
qList = new Vector<data>();
while((s=br.readLine())!=null)
{
if(s.equals("***"))
{
s=br.readLine();
while(!s.equals("@@@"))
{
que = que+s+'\n';
s = br.readLine();
}
}
if(s.equals("@@@"))
{
s = br.readLine();
qt = new data(que,s);
que="";
qList.add(qt);
}
}
br.close();
fr.close();
}catch (IOException e)
{
e.printStackTrace();
}
qnum = qList.size(); //统计题目数目
questions = new data[qnum];
for(int i=0;i<qnum;i++) //放入到试题列表中
{
questions[i] = qList.get(i);
}
}
public void showquestion()
{
textArea.setText("");
textArea.append(questions[now].getQuestion());
setSelected(questions[now].getAns());
}
public static void main(String[] args) {
new startDemo();
}
public void setSelected(String s) {//设置单选按钮不重复模块
if (s.equals("A")) buttonGroup.setSelected(abtn.getModel(), true);
if (s.equals("B")) buttonGroup.setSelected(bbtn.getModel(), true);
if (s.equals("C")) buttonGroup.setSelected(cbtn.getModel(), true);
if (s.equals("D")) buttonGroup.setSelected(dbtn.getModel(), true);
if (s.equals("")) buttonGroup.clearSelection();
}
public void showScore()
{
int right=0;
for(int i=0;i<qnum;i++)
{
if(questions[i].check())
right++;
}
int score = (int )(right*100/qnum);
JOptionPane.showMessageDialog(null, "答对"+right+"题,分数为"+score);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn1){
createst();
for(int i=0;i<qnum;i++)
{
System.out.print(questions[i].getQuestion());
}
now =0;
showquestion();
remove(spanel);
this.add(panel1,BorderLayout.NORTH);
this.add(panel2,BorderLayout.CENTER);
this.add(panel3,BorderLayout.SOUTH);
pre.setEnabled(false);
repaint();
validate();
}
if(e.getSource()==abtn) questions[now].setAns("A");//选项按钮事件
if(e.getSource()==bbtn) questions[now].setAns("B");
if(e.getSource()==cbtn) questions[now].setAns("C");
if(e.getSource()==dbtn) questions[now].setAns("D");
if(e.getSource()==pre)
{
now--;
if(now==qnum-2) next.setEnabled(true);
if(now==0) {
pre.setEnabled(false);
}
showquestion();
}
if(e.getSource()==next)
{
now++;
if(now==1) pre.setEnabled(true);
if(now==qnum-1) {
next.setEnabled(false);
}
showquestion();
}
if(e.getSource()==commit)
{
showScore();
commit.setEnabled(false);
System.exit(0); //退出
}
}
}