📄 semanticexperiment.java
字号:
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class semanticExperiment extends JFrame implements KeyListener {
JPanel1 panel1 ;
static JLabel label1 = new JLabel("") ;
String[] fileContent;
Thread thread = new Thread();//用来在屏幕中显示文字
Display display = new Display();
/**parseStr分别用来保存启动词,目标词,难度,类型*/
String[] parseStr = new String[4];
OutputData[] outputData ;
int lineNum ;//记录下当前显示字符串的行号
boolean isContinue = false;
//显示菜单部分
String menus_s[] = {
new String("工具(Y)"),
new String("帮助(Z)")
};
String item1_s[] = {
new String("开始(X) F2"),
new String("练习(Y) F3"),
new String("选项(Z)...")
};
String item2_s[] = {
new String("帮助主题(Y)"),
new String("关于软件() F1")
};
private JMenu[] menus = new JMenu[2];
private JMenuItem[] item1 = new JMenuItem[3];
private JMenuItem[] item2 = new JMenuItem[2];
JMenuBar mb = new JMenuBar();
/**这四条语句用来决定休息时间
*@cycleNum 决定显示的单词对数,默认是80对
*@time 决定休息的时间,默认休息时间是120秒
*@curuentDisplayNum当前显示的单词对数
*@totalNum之前总共显示的个数
*@total 每个人需要测试的总数
*/
int cycleNum = 30;
int time =120;
int currentDisplayNum = 0;
timeUpdate timeupdate;//休息时间的对象类
int totalNum = 0;
int total = 80 ;
/**是否选择的是"工具->开始"*/
int Mark_Start = 0;
/**获得系统时钟滴答数*/
Date date;
long time1 , time2;
/**输出文件*/
FileOutputStream fos;
BufferedWriter out;
String name = "";
ResultCount[] resultCount = new ResultCount[6];
/**构造函数,主要用来显示图形界面
*@para s 显示框架名称
*/
public semanticExperiment(String s){//
super(s);
addItems();
panel1 = new JPanel1();
panel1.setLayout(new BorderLayout());
panel1.setBackground(Color.black);
item1[0].addActionListener(new item11());
item1[1].addActionListener(new item12());
item1[2].addActionListener(new item13());
addKeyListener(this);
//设置菜单
for(int i = 0 ;i<item1.length;i++)
menus[0].add(item1[i]);
for(int i = 0 ;i<item2.length;i++)
menus[1].add(item2[i]);
for(int i = 0 ;i<menus.length;i++)
mb.add(menus[i]);
//添加菜单
setJMenuBar(mb);
label1.setForeground(Color.white);//设置显示字体颜色
label1.setFont(label1.getFont().deriveFont(80f));//设置字体大小
label1.setHorizontalAlignment(JLabel.CENTER);
panel1.add(BorderLayout.CENTER,label1);
add(panel1);
date = new Date();
}
public void set_label_value(){
try{
FileInputStream fis = new FileInputStream("data.csv");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("data.csv"),"UTF8"));
String s = in.readLine();
panel1.redraw(s);
}catch(Exception e){
System.out.println(e);
}
}
//添加菜单
private void addItems(){
for(int i = 0; i<menus_s.length;i++){
menus[i] =new JMenu(menus_s[i]);
}
for(int i = 0; i<item1_s.length;i++){
item1[i] = new JMenuItem(item1_s[i]);
}
for(int i = 0; i<item2_s.length;i++){
item2[i] = new JMenuItem(item2_s[i]);
}
}
/**重新设置JLabel中文字内容
*@para s 要显示的文字
*/
public void reDraw(String s){
panel1.redraw(s);
}
/**输入病人登录的基本信息并放在output文件夹下面
*@para patient登录的病人对象
*/
public void Output(patientInfo patient){
String age , gender,profession,culture,language,env,modify;
String writting,chopsticks,scissors,brush,throwing,painting;
name = patient.getName();
age = patient.getAge();
gender = patient.getGender();
profession = patient.getProfession();
culture = patient.getCulture();
language = patient.getLanguage();
writting = patient.getWritting();
chopsticks = patient.getChopsticks();
scissors = patient.getScissors();
brush = patient.getBrush();
throwing = patient.getThrowing();
painting = patient.getPainting();
env = patient.getEnv();
modify = patient.getModify();
try{
fos = new FileOutputStream("output/"+name+"-基本信息.txt");
out = new BufferedWriter(new OutputStreamWriter(fos,"UTF8"));
out.write("姓名:\t"+name);
out.newLine();//换行写
out.write("年龄:\t"+age);
out.newLine();
out.write("性别:\t"+gender);
out.newLine();
out.write("职业:\t"+profession);
out.newLine();
out.write("文化:\t"+culture);
out.newLine();
out.write("语言:\t"+language);
out.newLine();
out.write("双语环境:\t"+env);
out.newLine();
out.write("写字:\t"+writting);
out.newLine();
out.write("拿筷:\t"+chopsticks);
out.newLine();
out.write("剪刀:\t"+scissors);
out.newLine();
out.write("刷牙:\t"+brush);
out.newLine();
out.write("投掷:\t"+throwing);
out.newLine();
out.write("绘画:\t"+painting);
out.newLine();
out.write("矫正:\t"+modify);
out.close();
classrifyOutput("output/"+name+"-随机顺序.csv");
classrifyOutput("output/"+name+"-强联想强度.csv");
classrifyOutput("output/"+name+"-中联想强度.csv");
classrifyOutput("output/"+name+"-弱联想强度.csv");
classrifyOutput("output/"+name+"-无联想强度.csv");
classrifyOutput("output/"+name+"-填充组.csv");
classrifyOutput("output/"+name+"-原始顺序.csv");
}catch(IOException e){
System.out.println(e);
}
}
public void classrifyOutput(String type){
try{
fos = new FileOutputStream(type,true);
out = new BufferedWriter(new OutputStreamWriter(fos,"UTF8"));
out.write("启动词,目标词,联想强度,类型,结果,时间(ms)");
out.close();
}catch(IOException e){
System.out.println("classrifyOutput()Exception:\n"+e);
}
}
/**类JPanel动态显示文字
**动态更改JLable中的内容
*/
class JPanel1 extends JPanel{
String s ;
public JPanel1(){
this.s ="";
setSize(400,125);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
panel1.revalidate();
label1.setText(this.s);
}
public void redraw(String s){
this.s = s;
repaint();
}
}
/**键盘事件触发
* 按键"F2"处理菜单"工具"->"开始"的事件触发
* 按键"F3"处理菜单"工具"->"工具"的事件触发
*/
public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_F2){
for (int i = 0;i<resultCount.length ;i++ )
resultCount[i] = new ResultCount();
totalNum = 0;
Mark_Start = 1;
currentDisplayNum = 0;
patientInfo _patient = new patientInfo();
if(_patient.Mark_F2 == 1)
{
Output(_patient);
fileReader reader = new fileReader("input/data.csv");
}
}
if(keyCode == KeyEvent.VK_F3){
currentDisplayNum = 0;
Mark_Start = 0;
fileReader reader = new fileReader("input/study.csv");
}
if(keyCode == KeyEvent.VK_Z){
timeupdate = new timeUpdate("选项");
cycleNum = timeupdate.getCycle();
time = timeupdate.getTime();
currentDisplayNum = 0 ;
total = timeupdate.getNumber();
}
//空格键事件处理
if(keyCode == KeyEvent.VK_SPACE){
date = new Date();
time2 = date.getTime();
outputData[lineNum].time = time2-time1;
switch(outputData[lineNum].level){
case 4:
outputData[lineNum].result = true;
break;
case 3:
outputData[lineNum].result = true;
break;
case 2:
outputData[lineNum].result = false;
break;
case 1:
outputData[lineNum].result = true;
break;
case 0:
outputData[lineNum].result = false;
break;
}
}
if(keyCode == KeyEvent.VK_ENTER)
{
isContinue = true;
}
}
public void keyTyped(KeyEvent e){
;
}
public void keyReleased(KeyEvent e){
;
}
/**菜单"工具"->"开始"的事件触发*/
class item11 implements ActionListener
{
public void actionPerformed(ActionEvent e){
for (int i = 0;i<resultCount.length ;i++ )
resultCount[i] = new ResultCount();
totalNum = 0;
Mark_Start = 1;
currentDisplayNum++;
patientInfo _patient = new patientInfo();
if(_patient.Mark_F2 == 1){
Output(_patient);
fileReader reader = new fileReader("input/data.csv");
}
}
}
/**菜单"工具"->"练习"的事件触发*/
class item12 implements ActionListener
{
public void actionPerformed(ActionEvent e){
currentDisplayNum = 0;
Mark_Start = 0;
fileReader reader = new fileReader("input/study.csv");
}
}
/**菜单"工具"->"选项"的事件触发*/
class item13 implements ActionListener
{
public void actionPerformed(ActionEvent e){
timeupdate = new timeUpdate("选项");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -