当前位置:   article > 正文

利用Java制作背单词小应用_基于swing的背单词系统

基于swing的背单词系统

该小应用是本人学习Java前期制作的程序,可能还有着一些Bug没有修复,敬请谅解!该应用用到了图形化界面、I/O流本地磁盘读取/写入数据、键盘事件、焦点事件、监听事件等知识。该应用拥有功能:
file菜单项:打开文件、保存文件、另存为文件、写入反馈文件。
edit菜单项:修改数据、检查中文拼写、检查英文拼写、查找单词。
源代码:

package recite;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.filechooser.*;
public class Recite {
	public static void main(String args[]) {
		new Win();
	}
}
class Win extends JFrame implements ActionListener,FocusListener,KeyListener{
	JMenu menu,edit;
	JMenuItem open,save,save_as,modify,checkCH,checkEN,feedback,find;
	JMenuBar menuBar;
	JPanel nPanel,sPanel;
	JFileChooser fileChooser;
	Icon leftIcon=new ImageIcon("D:\\Program\\left.png"),
			rightIcon=new ImageIcon("D:\\Program\\right.png"),
			greenLight=new ImageIcon("D:\\Program\\d5.png"),
			blueLight=new ImageIcon("D:\\Program\\d1.png"),
			orangeLight=new ImageIcon("D:\\Program\\d9.png"),
			whiteLight=new ImageIcon("D:\\Program\\d2.png");
	JButton left,right,greenB,blueB,orangeB;
	int pageNum=1,pageTotal=100,selectionState,checkCHFlag=0,checkENFlag=1,modifyFlag=0,array1=100,array2=12,saveState=0,modifyed=0;
	Box baseBox,vBox[]=new Box[array2],hBox[]=new Box[array2];
	JTextField mess[]=new JTextField[array2],input[]=new JTextField[array2],answer[]=new JTextField[array2],focusField;
	JLabel page,status_bar;
	String data1[][]=new String[array1][array2],data2[][]=new String[array1][array2];
	Read autoReadFile=new Read();
	File file=new File("D:/Program/Data.txt");
	WindowAdapt windowAdapt=new WindowAdapt();
	Win(){
		init();
		setSize(800,800);
		setLocationRelativeTo(null);
		setVisible(true);
		windowAdapt.getFrame(this);
		addWindowListener(windowAdapt);
		setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		input[0].requestFocus();
	}
	void init() {
		setTitle("Recite");
		fileChooser=new JFileChooser();
		FileNameExtensionFilter filter=new FileNameExtensionFilter("Text","txt");
		fileChooser.setFileFilter(filter);
		nPanel=new JPanel();
		sPanel=new JPanel();
		left=new JButton();
		left.setIcon(leftIcon);
		left.setContentAreaFilled(false);
		left.setBorderPainted(false);
		left.setFocusable(false);
		right=new JButton();
		right.setIcon(rightIcon);
		right.setContentAreaFilled(false);
		right.setBorderPainted(false);
		right.setFocusable(false);
		greenB=new JButton();
		greenB.setIcon(whiteLight);
		greenB.setContentAreaFilled(false);
		greenB.setBorderPainted(false);
		greenB.setFocusable(false);
		blueB=new JButton();
		blueB.setIcon(whiteLight);
		blueB.setContentAreaFilled(false);
		blueB.setBorderPainted(false);
		blueB.setFocusable(false);
		orangeB=new JButton();
		orangeB.setIcon(orangeLight);
		orangeB.setContentAreaFilled(false);
		orangeB.setBorderPainted(false);
		orangeB.setFocusable(false);
		baseBox=Box.createVerticalBox();
		for(int i=0;i<array2;i++) {
			vBox[i]=Box.createVerticalBox();
			hBox[i]=Box.createHorizontalBox();
			mess[i]=new JTextField(6);
			mess[i].setEditable(false);
			mess[i].setFocusable(false);
			answer[i]=new JTextField(6);
			answer[i].setEditable(false);
			answer[i].setFocusable(false);
			input[i]=new JTextField(6);
			input[i].addFocusListener(this);
			mess[i].addKeyListener(this);
			answer[i].addKeyListener(this);
			input[i].addKeyListener(this);
			hBox[i].add(new JLabel("  "+(i+1)+" "));
			hBox[i].add(mess[i]);
			hBox[i].add(answer[i]);
			hBox[i].add(input[i]);
			vBox[i].add(hBox[i]);
			baseBox.add(vBox[i]);
			baseBox.add(Box.createVerticalStrut(10));
		}
		page=new JLabel("");
		status_bar=new JLabel("");
		nPanel.add(orangeB);
		nPanel.add(blueB);
		nPanel.add(greenB);
		sPanel.add(left);
		sPanel.add(page);
		sPanel.add(right);
		sPanel.add(status_bar);
		menuBar=new JMenuBar();
		menu=new JMenu("File");
		edit=new JMenu("Edit");
		open=new JMenuItem("open");
		save=new JMenuItem("save");
		save_as=new JMenuItem("save as");
		modify=new JMenuItem("modify");
		checkCH=new JMenuItem("checkCH");
		checkEN=new JMenuItem("checkEN");
		find=new JMenuItem("find");
		feedback=new JMenuItem("feedback");
		menu.add(open);
		menu.add(save);
		menu.add(save_as);
		menu.add(feedback);
		edit.add(modify);
		edit.add(checkCH);
		edit.add(checkEN);
		edit.add(find);
		menuBar.add(menu);
		menuBar.add(edit);
		add(nPanel,BorderLayout.NORTH);
		add(baseBox,BorderLayout.CENTER);
		add(sPanel,BorderLayout.SOUTH);
		open.addActionListener(this);
		save.addActionListener(this);
		save_as.addActionListener(this);
		modify.addActionListener(this);
		checkCH.addActionListener(this);
		checkEN.addActionListener(this);
		find.addActionListener(this);
		feedback.addActionListener(this);
		left.addActionListener(this);
		right.addActionListener(this);
		orangeB.addActionListener(this);
		blueB.addActionListener(this);
		greenB.addActionListener(this);
		setJMenuBar(menuBar);
		autoReadFile.readFile(file,data1,data2,mess,array2);
		pageNum=autoReadFile.pageNum;
		page.setText(pageNum+"/"+pageTotal);
		validate();
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==open) {
			int state=fileChooser.showOpenDialog(this);
			if(state==JFileChooser.APPROVE_OPTION) {
				file=fileChooser.getSelectedFile();
				autoReadFile.readFile(file,data1, data2, mess,array2);
				pageNum=autoReadFile.pageNum;
			}
			status_bar.setText("Open success!");
		}
		else if(e.getSource()==save) {
			new Save(file,data1,data2,pageNum,array2);
			status_bar.setText("Save success!");
			saveState=1;
		}
		else if(e.getSource()==save_as) {
			if((modifyFlag==1)) {
				JOptionPane.showMessageDialog(this,"Please off modify","defaults",JOptionPane.WARNING_MESSAGE);
				return;
			}
			int state=fileChooser.showSaveDialog(this);
			if(state==JFileChooser.APPROVE_OPTION) {
				file=fileChooser.getSelectedFile();
				new Save(file,data1,data2,pageNum,array2);
				status_bar.setText("Save as success!");
				saveState=1;
			}
		}
		else if(e.getSource()==feedback) {
			Feedback.getInstance();
		}
		else if(e.getSource()==modify||e.getSource()==greenB) {
			if(checkCHFlag==0||checkENFlag==0) {
				JOptionPane.showMessageDialog(this, "Please press modify after check on!");
				return;
			}
			if(!(orangeB.getIcon()==orangeLight)&&(blueB.getIcon()==blueLight)) {
				JOptionPane.showMessageDialog(this, "Please press modify after check on!");
				return ;
			}
			if(modifyFlag==0) {
				for(int i=0;i<array2;i++) {
					mess[i].setEditable(true);
					mess[i].setFocusable(true);
					answer[i].setEditable(true);
					answer[i].setFocusable(true);
				}
				modifyFlag=1;
				modifyed=1;
				greenB.setIcon(greenLight);
			}
			else if(modifyFlag==1) {
				for(int i=0;i<array2;i++) {
					mess[i].setEditable(false);
					mess[i].setFocusable(false);
					answer[i].setEditable(false);
					answer[i].setFocusable(false);
					data1[pageNum-1][i]=mess[i].getText();
					data2[pageNum-1][i]=answer[i].getText();
				}
				modifyFlag=0;
				greenB.setIcon(whiteLight);
			}
		}
		else if(e.getSource()==checkCH||e.getSource()==blueB) {//check chinese
			if(checkCHFlag==0) {
				for(int i=0;i<array2;i++)
					answer[i].setText(data2[pageNum-1][i]);
				checkCHFlag=1;
				blueB.setIcon(blueLight);
			}
			else {
				for(int i=0;i<array2;i++)
					answer[i].setText(null);
				checkCHFlag=0;
				blueB.setIcon(whiteLight);
			}
		}
		else if(e.getSource()==checkEN||e.getSource()==orangeB) {//check english
			if(checkENFlag==0) {
				for(int i=0;i<array2;i++)
					mess[i].setText(data1[pageNum-1][i]);
				checkENFlag=1;
				orangeB.setIcon(orangeLight);
			}
			else {
				for(int i=0;i<array2;i++)
					mess[i].setText(null);
				checkENFlag=0;
				orangeB.setIcon(whiteLight);
			}
		}
		else if(e.getSource()==find) {
			Find find=Find.getInstance();
			find.function(data1,array1,data2,array2);
		}
		else if(e.getSource()==left) {
			if(modifyFlag==1) {
				JOptionPane.showMessageDialog(this, "Please press left after modify off!");
				return ;
			}
			if(pageNum>1) {
				page.setText(--pageNum+"/"+pageTotal);
				for(int i=0;i<array2;i++) {
					if(checkENFlag==0)
						mess[i].setText(null);
					else
						mess[i].setText(data1[pageNum-1][i]);
					if(checkCHFlag==0)
						answer[i].setText(null);
					else
						answer[i].setText(data2[pageNum-1][i]);
					input[i].setText(null);
				}
				input[0].requestFocus();
			}
		}
		else if(e.getSource()==right) {
			if(modifyFlag==1) {
				JOptionPane.showMessageDialog(this, "Please press right after modify off!");
				return ;
			}
			if(pageNum<pageTotal) {
				page.setText(++pageNum+"/"+pageTotal);
				for(int i=0;i<array2;i++) {
					if(checkENFlag==0)
						mess[i].setText(null);
					else
						mess[i].setText(data1[pageNum-1][i]);
					if(checkCHFlag==0)
						answer[i].setText(null);
					else
						answer[i].setText(data2[pageNum-1][i]);
					input[i].setText(null);
				}
				input[0].requestFocus();
			}
		}
	}
	public void run() {
		String s1=input[selectionState].getText().trim(),
				s2=data2[pageNum-1][selectionState];
		System.out.println("input: "+s1+"  answer: "+s2);
		if(s1.equals(s2)) {
			System.out.println("Check: correct");
			status_bar.setText("Check: correct!");
		}
		else {
			System.out.println("Check: error");
			status_bar.setText("Check: error!");
		}
	}
	public void focusGained(FocusEvent e) {
		focusField=(JTextField)e.getSource();
		for(int i=0;i<array2;i++) {
			if(input[i]==focusField) {
				selectionState=i;
				System.out.println("now row: "+i);
				status_bar.setText(null);
			}
		}
	}
	public void keyReleased(KeyEvent e) {}
	public void keyPressed(KeyEvent e) {
		int key=e.getKeyCode();
		if(key==KeyEvent.VK_ENTER) {
			run();
		}
		else if(e.isControlDown()&&key==KeyEvent.VK_S) {
			new Save(file,data1,data2,pageNum,array2);
			System.out.println("control+s");
			status_bar.setText("(ctrl+s)Save success!");
			saveState=1;
		}
		else if(e.isShiftDown()&&key==KeyEvent.VK_DELETE) {
			for(int i=0;i<array2;i++)
				input[i].setText(null);
		}
		else if(e.isControlDown()&&key==KeyEvent.VK_3) {
			if(checkCHFlag==0||checkENFlag==0) {
				JOptionPane.showMessageDialog(this, "Please press modify after check on!");
				return;
			}
			if(!(orangeB.getIcon()==orangeLight)&&(blueB.getIcon()==blueLight)) {
				JOptionPane.showMessageDialog(this, "Please press modify after check on!");
				return ;
			}
			if(modifyFlag==0) {
				for(int i=0;i<array2;i++) {
					mess[i].setEditable(true);
					mess[i].setFocusable(true);
					answer[i].setEditable(true);
					answer[i].setFocusable(true);
				}
				modifyFlag=1;
				modifyed=1;
				greenB.setIcon(greenLight);
			}
			else if(modifyFlag==1) {
				for(int i=0;i<array2;i++) {
					mess[i].setEditable(false);
					mess[i].setFocusable(false);
					answer[i].setEditable(false);
					answer[i].setFocusable(false);
					data1[pageNum-1][i]=mess[i].getText();
					data2[pageNum-1][i]=answer[i].getText();
				}
				modifyFlag=0;
				greenB.setIcon(whiteLight);
			}
		}
		else if(e.isControlDown()&&key==KeyEvent.VK_2) {
			if(checkCHFlag==0) {
				for(int i=0;i<array2;i++)
					answer[i].setText(data2[pageNum-1][i]);
				checkCHFlag=1;
				blueB.setIcon(blueLight);
			}
			else {
				for(int i=0;i<array2;i++)
					answer[i].setText(null);
				checkCHFlag=0;
				blueB.setIcon(whiteLight);
			}
		}
		else if(e.isControlDown()&&key==KeyEvent.VK_1) {
			if(checkENFlag==0) {
				for(int i=0;i<array2;i++)
					mess[i].setText(data1[pageNum-1][i]);
				checkENFlag=1;
				orangeB.setIcon(orangeLight);
			}
			else {
				for(int i=0;i<array2;i++)
					mess[i].setText(null);
				checkENFlag=0;
				orangeB.setIcon(whiteLight);
			}
		}
		else if(e.isShiftDown()&&key==KeyEvent.VK_LEFT) {
			if(modifyFlag==1) {
				JOptionPane.showMessageDialog(this, "Please press left after modify off!");
				return ;
			}
			if(pageNum>1) {
				page.setText(--pageNum+"/"+pageTotal);
				for(int i=0;i<array2;i++) {
					if(checkENFlag==0)
						mess[i].setText(null);
					else
						mess[i].setText(data1[pageNum-1][i]);
					if(checkCHFlag==0)
						answer[i].setText(null);
					else
						answer[i].setText(data2[pageNum-1][i]);
					input[i].setText(null);
				}
				input[0].requestFocus();
			}
		}
		else if(e.isShiftDown()&&key==KeyEvent.VK_RIGHT) {
			if(modifyFlag==1) {
				JOptionPane.showMessageDialog(this, "Please press right after modify off!");
				return ;
			}
			if(pageNum<pageTotal) {
				page.setText(++pageNum+"/"+pageTotal);
				for(int i=0;i<array2;i++) {
					if(checkENFlag==0)
						mess[i].setText(null);
					else
						mess[i].setText(data1[pageNum-1][i]);
					if(checkCHFlag==0)
						answer[i].setText(null);
					else
						answer[i].setText(data2[pageNum-1][i]);
					input[i].setText(null);
				}
				input[0].requestFocus();
			}
		}
		else if(e.isControlDown()&&key==KeyEvent.VK_B) {
			Feedback.getInstance();
		}
		else if(e.isControlDown()&&key==KeyEvent.VK_F) {
			Find find=Find.getInstance();
			find.function(data1,array1,data2,array2);
		}
	}
	public void keyTyped(KeyEvent e) {}
	public void focusLost(FocusEvent e) {}
	class WindowAdapt extends WindowAdapter{ 
		JFrame frame;
		public void windowClosing(WindowEvent e) {
			if(saveState==0&&modifyed==1) {
				int n=JOptionPane.showConfirmDialog(frame, "Save it?","Really",JOptionPane.YES_NO_OPTION);
				if(n==JOptionPane.YES_OPTION) 
					new Save(file,data1,data2,pageNum,array2);
			}
			new Save(file,data1,data2,pageNum,array2);
			System.exit(0);
		}
		public void getFrame(JFrame frame) {
			this.frame=frame;
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
package recite;
import java.io.*;
public class Save {
	Save(File file,String data1[][],String data2[][],int pageNum,int array2){
		try {
			Writer writer=new FileWriter(file);
			BufferedWriter bWriter=new BufferedWriter(writer);
			for(int i=0;i<100;i++) {
				for(int j=0;j<array2;j++) {
					if((data1[i][j]!=null)&&(data2[i][j]!=null)) {
						bWriter.write(data1[i][j]);
						bWriter.newLine();
						bWriter.write("--------------------------------"+data2[i][j]);
						bWriter.newLine();
					}
				}
			}
			File userDataFile=new File(file.getParent(),"userDataFile.txt");
			userDataFile.createNewFile();
			System.out.println("user_data_file absolutePath:"+userDataFile.getAbsolutePath());
			System.out.println("user_data_file absolutePath exists:"+userDataFile.exists());
			Writer w=new FileWriter(userDataFile);
			BufferedWriter bW=new BufferedWriter(w);
			bW.write(String.valueOf(pageNum));
			bW.close();
			bWriter.close();
		}
		catch(Exception ex) {
			System.out.println(ex.toString());
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
package recite;
import java.io.*;
import javax.swing.*;
public class Read {
	int pageNum;
	void readFile(File file,String data1[][],String data2[][],JTextField mess[],int array2){
		try {
			File userDataFile=new File(file.getParent(),"userDataFile.txt");
			System.out.println("user_Data_File.txt exists:"+userDataFile.exists());
			Reader reader=new FileReader(file),
					reader2=new FileReader(userDataFile);
			BufferedReader bReader=new BufferedReader(reader),
					bReader2=new BufferedReader(reader2);
			String s=null;
			int i=0,j=0,x=0,y=0;
			while((s=bReader.readLine())!=null) {
				if(!s.startsWith("-")) {
					data1[i][j++]=s;
					if(j>=array2) {
						i++;
						j=0;
					}
				}
				else {
					s=s.replaceAll("-","");
					data2[x][y++]=s;
					if(y>=array2) {
						x++;
						y=0;
					}
				}
			}
			pageNum=Integer.parseInt(bReader2.readLine());
			for(int m=0;m<array2;m++) 
				mess[m].setText(data1[pageNum-1][m]);
			bReader.close();
			bReader2.close();
			System.out.println("open file!");
		}
		catch(Exception exp) {
			System.out.println("Can't open file :");
			System.out.println(exp.toString());
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
package recite;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class Find extends JFrame implements KeyListener{
	private static Find find=null;
	WinAdapt winAdapt=new WinAdapt();
	JTextField input;
	JTextArea result;
	Box one_VBox,base_Box;
	String data1[][],data2[][];
	int array1,array2;
	private Find() {}
	public static Find getInstance() {
		if(find==null) {
			find=new Find();
			find.init();
		}
		else
			;
		return find;
	}
	void init() {
		setTitle("Find");
		setSize(500,350);
		setLocationRelativeTo(null);
		setVisible(true);
		addWindowListener(winAdapt);
	}
	void function(String data1[][],int array1,String data2[][],int array2) {
		this.data1=data1;
		this.data2=data2;
		this.array1=array1;
		this.array2=array2;
		setLayout(new FlowLayout());
		input=new JTextField(35);
		result=new JTextArea(12,6);
		result.setEditable(false);
		one_VBox=Box.createVerticalBox();
		base_Box=Box.createHorizontalBox();
		one_VBox.add(input);
		one_VBox.add(Box.createVerticalStrut(15));
		one_VBox.add(new JScrollPane(result));
		base_Box.add(one_VBox);
		add(base_Box);
		input.addKeyListener(this);
	}
	public void keyTyped(KeyEvent e) {}
	public void keyReleased(KeyEvent e) {}
	public void keyPressed(KeyEvent e) {
		int key=e.getKeyCode(),t=1;
		if(key==KeyEvent.VK_ENTER) {
			result.setText(" ");
			String s=input.getText();
			try {
				for(int i=0;i<array1;i++) {
					for(int j=0;j<array2;j++) {
						if(data1[i][j].contains(s)) {
							result.append((t++)+".   Page: "+(i+1)+"  row: "+(j+1)+"        "+data1[i][j]);
							result.append("\n");
						}
						if(data2[i][j].contains(s)) {
							result.append((t++)+".   Page: "+(i+1)+"  row: "+(j+1)+"        "+data2[i][j]);
							result.append("\n");
						}
					}
				}
				t=1;
			}
			catch(Exception ex) {}
		}
	}
	class WinAdapt extends WindowAdapter{
		public void windowClosing(WindowEvent e) {
			find=null;
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
package recite;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Feedback extends JFrame {
	JTextArea text;
	WindowAdap windowAdap=new WindowAdap();
	private static Feedback feedback=null;
	private Feedback(){}
	public static Feedback getInstance() {
		if(feedback==null) {
			feedback=new Feedback();
			feedback.init();
		}
		else
			;
		return feedback;
	}
	public void init() {
		this.setLayout(new FlowLayout());
		text=new JTextArea(25,42);
		text.setLineWrap(true);
		add(new JScrollPane(text));
		addWindowListener(windowAdap);
		try {
			String s;
			File file=new File("D:\\Program\\feedback.txt");
			Reader reader=new FileReader(file);
			BufferedReader bReader=new BufferedReader(reader);
			while((s=bReader.readLine())!=null) 
				text.append(s+"\n");
			bReader.close();
		}
		catch(Exception ex) {
			System.out.println(ex.toString());
		}
		setTitle("feedback");
		setSize(500,500);
		setLocationRelativeTo(null);
		setVisible(true);
	}
	class WindowAdap extends WindowAdapter{
		public void windowClosing(WindowEvent e) {
			try {
				File file=new File("D:\\Program\\feedback.txt");
				Writer writer=new FileWriter(file);
				BufferedWriter bWriter=new BufferedWriter(writer);
				bWriter.write(text.getText());
				bWriter.close();
			}
			catch(Exception ex) {}
			feedback=null;
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

程序界面:
在这里插入图片描述
除了源代码,还需要在本地D://Program文件夹中插入如下四张图片或者文件名相同,大小接近的任意六张图片作为按钮在这里插入图片描述

  • 第一列文本框是中文,是第二列文本框中的英文的中文翻译,可自定义中文意思(按下前两个按钮后再按第三个按钮,全部文本框为可编辑状态)
  • 第二列文本框是英文,是第一列文本框中的中文的英文翻译,可自定义中文意思(按下前两个按钮后再按第三个按钮,全部文本框为可编辑状态)
  • 第三列文本框是检查文本框,当用户隐藏了中文一列,或者英文一列,在第三列输入对应的翻译,会显示拼写正确与否
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/256111
推荐阅读
相关标签
  

闽ICP备14008679号