Java 实训3:编写一个窗体程序模拟单词拼写。

版权声明:欢迎大佬批评指正!O(∩_∩)O https://blog.csdn.net/wyh1618/article/details/84347797
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);
		}
	}

}

猜你喜欢

转载自blog.csdn.net/wyh1618/article/details/84347797