作者在 2011-12-25 22:09:31 发布以下内容
import java.awt.*;
import java.awt.event.*;
public class LetterLabel extends Button implements FocusListener,
MouseListener{
//构造器
LetterLabel(){
addFocusListener(this); //将当前对象注册为自身的焦点事件监视器
addMouseListener(this); //将当前对象注册为自身的鼠标事件监视器
this.setBackground(Color.cyan);//青色
this.setFont(new Font("",Font.BOLD,32));//字体
}
public static LetterLabel[] getLetterLabel(int n){
LetterLabel a[]=new LetterLabel[n];
for (int i = 0; i<a.length; i++){
a[i]=new LetterLabel();
}
return a;
}
public void focusGained(FocusEvent e){
this.setBackground(Color.red);
}
public void focusLost(FocusEvent e){
this.setBackground(Color.cyan);
}
public void mousePressed(MouseEvent e){
this.requestFocus();
}
/*???????????????????????????????????????????*/
public void setText(char c){
setLabel(""+c);
}
public char[] getText(){
return getLabel().toCharArray();
}
/*???????????????????????????????????????????*/
public void mouseClicked(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}
import java.awt.event.*;
public class LetterLabel extends Button implements FocusListener,
MouseListener{
//构造器
LetterLabel(){
addFocusListener(this); //将当前对象注册为自身的焦点事件监视器
addMouseListener(this); //将当前对象注册为自身的鼠标事件监视器
this.setBackground(Color.cyan);//青色
this.setFont(new Font("",Font.BOLD,32));//字体
}
public static LetterLabel[] getLetterLabel(int n){
LetterLabel a[]=new LetterLabel[n];
for (int i = 0; i<a.length; i++){
a[i]=new LetterLabel();
}
return a;
}
public void focusGained(FocusEvent e){
this.setBackground(Color.red);
}
public void focusLost(FocusEvent e){
this.setBackground(Color.cyan);
}
public void mousePressed(MouseEvent e){
this.requestFocus();
}
/*???????????????????????????????????????????*/
public void setText(char c){
setLabel(""+c);
}
public char[] getText(){
return getLabel().toCharArray();
}
/*???????????????????????????????????????????*/
public void mouseClicked(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}
/*产生随机字符组合*/
public class RondomString{
String str="";
//获取字符串
public String getRondomString(String s){
StringBuffer strBuffer=new StringBuffer(s);
int m=strBuffer.length();//字符串的长度
for (int i = 0; i<m; i++){
int index=(int)(Math.random()*strBuffer.length());
char c=strBuffer.charAt(index);
str+=c;
//移除此序列指定位置的 char。此序列将缩短一个 char。
strBuffer=strBuffer.deleteCharAt(index);
}
return str;
}
}
public class RondomString{
String str="";
//获取字符串
public String getRondomString(String s){
StringBuffer strBuffer=new StringBuffer(s);
int m=strBuffer.length();//字符串的长度
for (int i = 0; i<m; i++){
int index=(int)(Math.random()*strBuffer.length());
char c=strBuffer.charAt(index);
str+=c;
//移除此序列指定位置的 char。此序列将缩短一个 char。
strBuffer=strBuffer.deleteCharAt(index);
}
return str;
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SpellingWordFrame extends Frame implements KeyListener,
ActionListener{
//组件声明
TextField inputWord;
Button button;
LetterLabel label[];
Panel northP,centerP;
Box wordBox;
String hintMessage="用鼠标单击字母。按左右键交换字母,将其排列成所输入的单词";
Label messageLabel=new Label(hintMessage);
String word="";
//构造器
SpellingWordFrame(){
inputWord=new TextField(12);
button=new Button("确定");
button.addActionListener(this);//注册事件监听器
inputWord.addActionListener(this);
//北区面板
northP=new Panel();
northP.add(new Label("输入一个英文单词"));
northP.add(inputWord);
northP.add(button);
//中区面板
centerP=new Panel();
wordBox=Box.createHorizontalBox();//创建水平Box
centerP.add(wordBox);
//整个窗体布局设置
this.add(northP,BorderLayout.NORTH);
this.add(centerP,BorderLayout.CENTER);
this.add(messageLabel,BorderLayout.SOUTH);
//设置坐标和大小
this.setBounds(200,200,350,180);
this.setVisible(true);//可见
this.validate();//验证此容器及其所有子组件。
//响应关闭按钮
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
//运行时执行下面的操作
public void actionPerformed(ActionEvent e){
word=inputWord.getText();//获取文本中的字符
int n=word.length();//把字符串的长度赋值给n
RondomString rondom=new RondomString();
String randomWord=rondom.getRondomString(word);
wordBox.removeAll();
messageLabel.setText(hintMessage);
if(n>0){
label=LetterLabel.getLetterLabel(n);
for (int i = 0; i<label.length; i++){
label[i].addKeyListener(this); //讲当前窗口注册为label[i]的键盘监视器
label[i].setText(randomWord.charAt(i)); //
wordBox.add(label[i]);
}
this.validate();
this.inputWord.setText(null);
this.label[0].requestFocus();
}
}
//按下某个键时调用此方法
public void keyPressed(KeyEvent e){
LetterLabel sourceLabel=(LetterLabel)e.getSource();
int index=-1;
if(e.getKeyCode()==KeyEvent.VK_LEFT){
for (int i = 0; i<label.length; i++){
if(label[i]==sourceLabel){
index=i;
break;
}
}
////////////////////////////////////////////////////////
if(index!=0){
char temp=label[index].getText()[0];
label[index].setText(label[index-1].getText()[0]);
label[index-1].setText(temp);
label[index-1].requestFocus();
}
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
for (int i = 0; i<label.length; i++){
if(label[i]==sourceLabel){
index=i;
break;
}
}
if(index!=label.length-1){
char temp=label[index].getText()[0];
label[index].setText(label[index+1].getText()[0]);
label[index+1].setText(temp);
label[index+1].requestFocus();
}
}
this.validate();
}
//键入某个键时调用此方法
public void keyTyped(KeyEvent e){};
//释放某个键时调用此方法
public void keyReleased(KeyEvent e){
String success="";
for (int i = 0; i<label.length; i++){
char str=label[i].getText()[0];
success+=str;
}
if(success.equals(word)){
messageLabel.setText("恭喜你,成功了");
for (int i = 0; i<label.length; i++){
label[i].removeKeyListener(this);
label[i].removeFocusListener(label[i]);
label[i].setBackground(Color.green);
}
inputWord.requestFocus();
}
}
}
import java.awt.event.*;
import javax.swing.*;
public class SpellingWordFrame extends Frame implements KeyListener,
ActionListener{
//组件声明
TextField inputWord;
Button button;
LetterLabel label[];
Panel northP,centerP;
Box wordBox;
String hintMessage="用鼠标单击字母。按左右键交换字母,将其排列成所输入的单词";
Label messageLabel=new Label(hintMessage);
String word="";
//构造器
SpellingWordFrame(){
inputWord=new TextField(12);
button=new Button("确定");
button.addActionListener(this);//注册事件监听器
inputWord.addActionListener(this);
//北区面板
northP=new Panel();
northP.add(new Label("输入一个英文单词"));
northP.add(inputWord);
northP.add(button);
//中区面板
centerP=new Panel();
wordBox=Box.createHorizontalBox();//创建水平Box
centerP.add(wordBox);
//整个窗体布局设置
this.add(northP,BorderLayout.NORTH);
this.add(centerP,BorderLayout.CENTER);
this.add(messageLabel,BorderLayout.SOUTH);
//设置坐标和大小
this.setBounds(200,200,350,180);
this.setVisible(true);//可见
this.validate();//验证此容器及其所有子组件。
//响应关闭按钮
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
//运行时执行下面的操作
public void actionPerformed(ActionEvent e){
word=inputWord.getText();//获取文本中的字符
int n=word.length();//把字符串的长度赋值给n
RondomString rondom=new RondomString();
String randomWord=rondom.getRondomString(word);
wordBox.removeAll();
messageLabel.setText(hintMessage);
if(n>0){
label=LetterLabel.getLetterLabel(n);
for (int i = 0; i<label.length; i++){
label[i].addKeyListener(this); //讲当前窗口注册为label[i]的键盘监视器
label[i].setText(randomWord.charAt(i)); //
wordBox.add(label[i]);
}
this.validate();
this.inputWord.setText(null);
this.label[0].requestFocus();
}
}
//按下某个键时调用此方法
public void keyPressed(KeyEvent e){
LetterLabel sourceLabel=(LetterLabel)e.getSource();
int index=-1;
if(e.getKeyCode()==KeyEvent.VK_LEFT){
for (int i = 0; i<label.length; i++){
if(label[i]==sourceLabel){
index=i;
break;
}
}
////////////////////////////////////////////////////////
if(index!=0){
char temp=label[index].getText()[0];
label[index].setText(label[index-1].getText()[0]);
label[index-1].setText(temp);
label[index-1].requestFocus();
}
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
for (int i = 0; i<label.length; i++){
if(label[i]==sourceLabel){
index=i;
break;
}
}
if(index!=label.length-1){
char temp=label[index].getText()[0];
label[index].setText(label[index+1].getText()[0]);
label[index+1].setText(temp);
label[index+1].requestFocus();
}
}
this.validate();
}
//键入某个键时调用此方法
public void keyTyped(KeyEvent e){};
//释放某个键时调用此方法
public void keyReleased(KeyEvent e){
String success="";
for (int i = 0; i<label.length; i++){
char str=label[i].getText()[0];
success+=str;
}
if(success.equals(word)){
messageLabel.setText("恭喜你,成功了");
for (int i = 0; i<label.length; i++){
label[i].removeKeyListener(this);
label[i].removeFocusListener(label[i]);
label[i].setBackground(Color.green);
}
inputWord.requestFocus();
}
}
}
public class WordMianClass{
public static void main(String[] agrs){
new SpellingWordFrame();
}
}
public static void main(String[] agrs){
new SpellingWordFrame();
}
}