package 实训三;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javafx.scene.layout.Border;
public class WordCheck extends JFrame implements KeyListener, FocusListener {
JTextField text1,text2;
JButton bt1,bt2;
JPanel jp1,jp2,jp3;
JLabel l1,l2,l3;
JButton[] jbt = new JButton[10];
String s1;
int n = 0;
char c;
public WordCheck() {
text1 = new JTextField(10);
l1 = new JLabel("请输入一个英语单词:");
l2 = new JLabel("用鼠标单击字母,按方向键移动字母,使其排列成原序列的单词");
bt1= new JButton("确认");
bt1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
for (int i = 0; i < n; i++) {
jp3.remove(jbt[i]);
}
changeSeque(e);
}
});
jp1 = new JPanel();
jp1.add(l1);
jp1.add(text1);
jp1.add(bt1);
add(jp1,BorderLayout.NORTH);
jp2 = new JPanel();
jp2.add(l2);
add(jp2,BorderLayout.SOUTH);
}
public void changeSeque(ActionEvent e) {
// TODO Auto-generated method stub
s1 = text1.getText();
n = s1.length();
int[] a1 = new int[n];
int[] a2 = new int[n];
for(int i=0;i<n;i++) {
a1[i] = i+1;
}
int j=0;
while(j<n) {
int m = (int) (Math.random()*n);
for(int i=0;i<n;i++) {
if(a1[m]!=0) {
a2[j] = m;
j++;
a1[m]=0;
}
}
}
if (e.getActionCommand().equals("确认")) {
jp3 = new JPanel();
Font font = new Font(s1, Font.PLAIN, 46);
for (int i = 0; i < n; i++) {
char c = s1.charAt(a2[i]);
jbt[i] = new JButton("" + c);
jbt[i].setPreferredSize(new Dimension(80, 80));
jbt[i].setFont(font);
jbt[i].setForeground(Color.black);
jbt[i].addFocusListener(this);
jbt[i].addKeyListener(this);
jp3.add(jbt[i]);
add(jp3, BorderLayout.CENTER);
}
text1.setText(null);
setVisible(true);
}
}
public static void main(String[] args) {
WordCheck wordcheck = new WordCheck();
wordcheck.setVisible(true);
wordcheck.setBounds(300, 300, 900, 300);
wordcheck.setResizable(false);
wordcheck.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
for (int i = 0; i < s1.length(); i++) {
if (jbt[i] == (JButton) e.getSource()) {
jbt[i].setForeground(Color.red);
}
}
}
@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub
for (int i = 0; i < s1.length(); i++) {
if (jbt[i] == (JButton) e.getSource()) {
jbt[i].setForeground(Color.black);
}
}
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
for (int i = 0; i < s1.length(); i++) {
if (jbt[i] == (JButton) e.getSource()) {
if (e.getKeyCode() == KeyEvent.VK_A) {
//System.out.println("000000");
move(i, "l");
//System.out.println("000000");
char[] str2 = new char[n];
for (int k = 0; k < n; k++) {
str2[k] = jbt[k].getText().charAt(0);
}
String ss1 = new String(str2);
if (ss1.equals(s1)) {
l2.setText("恭喜你,你成功了!");
for (int p = 0; p < n; p++) {
jbt[p].setForeground(Color.yellow);
}
}
} else if (e.getKeyCode() == KeyEvent.VK_D) {
move(i, "r");
char[] str2 = new char[n];
for (int k = 0; k < n; k++) {
str2[k] = jbt[k].getText().charAt(0);
}
String ss1 = new String(str2);
if (ss1.equals(s1)) {
l2.setText("恭喜你,你成功了!");
for (int p = 0; p < n; p++) {
jbt[p].setForeground(Color.yellow);
}
}
}
}
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
void move(int i, String str1) {
if (str1.equals("l") && i >= 1) {
String tp = jbt[i].getText();
String tp1 = jbt[i - 1].getText();
jbt[i].setText(tp1);
jbt[i - 1].setText(tp);
} else if (str1.equals("r") && i <= n - 2) {
String tp = jbt[i].getText();
String tp1 = jbt[i + 1].getText();
jbt[i].setText(tp1);
jbt[i + 1].setText(tp);
}
}
}