-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathheisigProject.java
150 lines (142 loc) · 5.21 KB
/
heisigProject.java
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
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.util.concurrent.ThreadLocalRandom;
import static java.lang.Integer.parseInt;
public class heisigProject extends JFrame implements ActionListener {
private JButton random, remove, reset, answer;
private JTextField wordDisplay, textBox1, textBox2, answerBox;
private JLabel label;
private int start, end;
private ArrayList<String> list = new ArrayList<String>();
private ArrayList<String> kanji = new ArrayList<>();
private int counter = 0, current = 0;
public heisigProject() {
super();
setTitle("heisigProject");
setSize(600, 145);
setDefaultCloseOperation(EXIT_ON_CLOSE);
random = new JButton("Random");
remove = new JButton("Remove");
reset = new JButton("Reset");
answer = new JButton("Answer");
label = new JLabel("Enter the interval to study");
wordDisplay = new JTextField(15);
textBox1 = new JTextField(4);
textBox2 = new JTextField(4);
answerBox = new JTextField(4);
random.addActionListener(this);
remove.addActionListener(this);
reset.addActionListener(this);
answer.addActionListener(this);
load(); // loads file for the first time
setLayout(new BorderLayout());
JPanel north = new JPanel();
north.add(label);
north.add(textBox1);
north.add(textBox2);
north.add(wordDisplay);
add(north, BorderLayout.NORTH);
answerBox.setFont(new Font(answer.getFont().getName(), answer.getFont().getStyle(), 48));
JPanel center = new JPanel();
center.add(random);
center.add(remove);
center.add(reset);
center.add(answer);
center.add(answerBox);
add(center, BorderLayout.CENTER);
setVisible(true);
wordDisplay.setEditable(false);
answerBox.setEditable(false);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == reset)
load();
else if (e.getSource() == answer) {
if (!wordDisplay.getText().equals("All Cleared") && !wordDisplay.getText().equals(""))
answerBox.setText(kanji.get(current));
} else if (wordDisplay.getText().equals("All Cleared") || wordDisplay.getText().equals("Error")) {
} else if (e.getSource() == remove) {
if (wordDisplay.getText().equals("")) {
} else {
if (counter != list.size()) {
list.set(list.indexOf(wordDisplay.getText()), "removed");
counter++;
if (counter == list.size())
wordDisplay.setText("All Cleared");
}
}
}
try {
int start = parseInt(textBox1.getText());
int end = parseInt(textBox2.getText());
if (end < start || end > list.size())
wordDisplay.setText("Error");
else if (allRemoved(start, end))
wordDisplay.setText("All Cleared");
else if (e.getSource() == answer) {
} else {
setRandom(start, end);
answerBox.setText("");
}
} catch (Exception er) {
if ((!wordDisplay.getText().equals("") || e.getSource() == random) && e.getSource() != reset
&& e.getSource() != answer) {
setRandom(1, list.size());
answerBox.setText("");
}
}
}
public void setRandom(int start, int end) {
int randomNum = ThreadLocalRandom.current().nextInt(start, end + 1);
if (list.get(randomNum - 1).equals("removed"))
if (!allRemoved(start, end))
setRandom(start, end);
else {
}
else {
wordDisplay.setText(list.get(randomNum - 1));
current = randomNum - 1;
}
}
public void load() {
list.clear();
try {
URL url = getClass().getResource("heisig.txt");
File file = new File(url.getPath());
Scanner scan = new Scanner(file); // ".\\src\\heisig.txt"
while (scan.hasNextLine()) {
list.add(scan.nextLine());
}
url = getClass().getResource("kanji.txt");
file = new File(url.getPath());
scan = new Scanner(file, "utf-8");
while (scan.hasNextLine()) {
String temp = scan.nextLine();
try {
kanji.add(temp.substring(temp.indexOf(" ")));
} catch (Exception e) {
kanji.add(temp);
}
}
scan.close();
} catch (Exception er) {
er.printStackTrace();
}
counter = 0;
}
public boolean allRemoved(int start, int end) {
for (int i = start; i <= end; i++) {
if (!list.get(i - 1).equals("removed"))
return false;
}
return true;
}
public static void main(String[] args) {
new heisigProject();
System.out.println("Working Directory = " + System.getProperty("user.dir"));
}
}