带计时器的做题器(gui
新学
1
JCheckBox chckbxA = new JCheckBox("a");
JCheckBox的监听器接口ItemListener,响应方法itemStateChanged
boolean isSelect=a.isSelected();是否被选
a.setSelected(false);可以控制 是否选择
2
Timer类stop了,好像不用restart,直接start就可以了
package thread; import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader; import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextArea; public class MyWin extends JFrame implements ActionListener,ItemListener { private JPanel contentPane;
JButton xuantimu = new JButton("\u9009\u9898\u76EE");
JFileChooser file1=new JFileChooser();
File dir;
int MaxTime=8;
JLabel second = new JLabel("剩8秒 问题:");
JTextArea text = new JTextArea();
JLabel label2 = new JLabel("分数:");
JButton button = new JButton("再做一遍");
Timer timer1=new Timer(1000,this);
String daan=null;
FileReader fileReader;
BufferedReader in1;
int fenshu=0; /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MyWin frame = new MyWin();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} /**
* Create the frame.
*/
public MyWin() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 719, 145);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane); JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER); panel.add(xuantimu); panel.add(second); text.setColumns(17);
text.setRows(3);
panel.add(text); JCheckBox chckbxA = new JCheckBox("a");
panel.add(chckbxA); JCheckBox chckbxB = new JCheckBox("b");
panel.add(chckbxB); JCheckBox chckbxC = new JCheckBox("c");
panel.add(chckbxC); JCheckBox chckbxD = new JCheckBox("d");
panel.add(chckbxD); panel.add(label2); panel.add(button); chckbxA.addItemListener(this);
chckbxB.addItemListener(this);
chckbxC.addItemListener(this);
chckbxD.addItemListener(this); button.addActionListener(this);
xuantimu.addActionListener(this); } void readNext(){
try{
text.setText(null);
String s=null;
for(;(s=in1.readLine())!=null;){
if(!s.startsWith("-")){
text.append(s+"\n");
}
else{
s=s.replaceAll("-","");
daan=s;
break;
}
}
timer1.start();
}
catch(Exception e){
System.out.println("2222");
System.out.println(e.getMessage());
}
}
void setFile(){
int state=file1.showOpenDialog(this);
if(state==JFileChooser.APPROVE_OPTION){
try{
dir=file1.getSelectedFile();
fileReader=new FileReader(dir);
in1=new BufferedReader(fileReader);
readNext();
}
catch(Exception e1){
System.out.println("11111");
System.out.println(e1.getMessage());
}
}
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO 自动生成的方法存根
JCheckBox a=(JCheckBox)e.getItemSelectable();
String s=a.getText();
// System.out.println(s);
// System.out.println(daan);
boolean isSelect=a.isSelected();
if(s.equals(daan.trim())&&isSelect){
fenshu++;
label2.setText("分数"+fenshu);
timer1.stop();
MaxTime=8;
readNext();
a.setSelected(false);
}
} @Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
if(e.getSource()==timer1){
second.setText("剩"+MaxTime+"秒"+",问题");
MaxTime--;
if(MaxTime<=0){
MaxTime=8;
readNext();
} }
else if(e.getSource()==button){
fenshu=0;
setFile();
}
else if(e.getActionCommand()=="选题目"){
setFile();
}
} }
带计时器的做题器(gui的更多相关文章
- CodeM美团点评编程大赛复赛 做题感悟&题解
[T1] [简要题意] 长度为N的括号序列,随机确定括号的方向:对于一个已确定的序列,每次消除相邻的左右括号(右左不行),消除后可以进一步合并和消除直到不能消为止.求剩下的括号的期望.\(N \l ...
- SDOI2016 R1做题笔记
SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...
- AtCoder Grand Contest 1~10 做题小记
原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-1-to-10.html 考虑到博客内容较多,编辑不方便的情 ...
- Python基础(七) python自带的三个装饰器
说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @prope ...
- BZOJ做题记录[0512~?]
觉得做一道开一篇真不好...好多想找的东西都被刷下去了... 至于?的日期究竟到什么时候...还是看心情...但是估计不会超过七天吧 最后更新时间:05/19 10:42 [05/14 10:56]我 ...
- python中自带的三个装饰器
说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @propert ...
- NOIP2016考前做题(口胡)记录
NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...
- 攻防世界web新手区做题记录
学校信安协会第一次培训结束后的作业,要求把攻防世界的web新手区题目做一遍并写题解. 第一题 view_source 查看源代码右键不能用,但是F12能用,于是找到源代码 输入到flag框即可 后来在 ...
- UOJ 做题记录
UOJ 做题记录 其实我这么弱> >根本不会做题呢> > #21. [UR #1]缩进优化 其实想想还是一道非常丝播的题目呢> > 直接对于每个缩进长度统计一遍就好 ...
随机推荐
- 禁用窗体关闭按钮(使用GetWindowLong修改GWL_STYLE)
一般我们不想让窗体能够关闭, 首先想到的是在OnCloseQuery事件里设置CanClose := False, 不过在某些情况下这个会和程序关闭窗体的业务逻辑产生冲突 所以写了下面这个函数, 可以 ...
- JavaScript 函数和对象
在javascirpt 世界中,所有的函数都是对象,并且还可以被用来创建对象. function make_person(firstname, lastname, age) { person = {} ...
- 【HDOJ】1525 Euclid's Game
自己想明白的第一道博弈.首先a==b的时候肯定是先手赢: 然后当a>=2*b时,不妨假设a=nb+k, k<b,因此,不论后续怎么博弈,一定可以出现a=k, b=b的情况.因此,无论这个局 ...
- bzoj3192
把堆顶和堆顶接起来,然后用树状数组模拟即可不得不说一开始我竟然把100000*100000当成不超出longint 而忘开int64,无药可救…… ..] of longint; now,n1,n2, ...
- HDU 5396 Expression(DP+组合数)(详解)
题目大意: 给你一个n然后是n个数. 然后是n-1个操作符,操作符是插入在两个数字之间的. 由于你不同的运算顺序,会产生不同的结果. 比如: 1 + 1 * 2 有两种 (1+1)*2 或者 ...
- windows7旗舰版IIS6配置-保证能发布
http://wenku.baidu.com/view/20b4d26248d7c1c708a145d1.html
- div+css模式编写html静态网页例子_仿照网页制作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- weak属性需要在dealloc中置nil么?
出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙(子循),目前就职于滴滴出行. 转载者:豆电雨(starain)微信:doudianyu 不需要. 在ARC环境无论是强指针还是 ...
- sql第一课笔记
这是我看了imooc的视频教程之后重新写的笔记. 虽然之前也是学习过SQL Server数据库,但是也是忘记得差不多了.现在重新捡起来,安装一次数据库练习,使用的是mysql. 第一课是最简单的创建, ...
- redmine安装插件流程
1.redmine用一键安装即可2.进入C:\Bitnami\redmine-3.1.1-1\,执行use_redmine.exe,进入dos系统 不能用cmd进入.3.把文件拷贝到C:\Bitnam ...