⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 semanticexperiment.java

📁 显示韩文
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -