ActionEvent失效 财富值35

2016-10-13 22:58发布

1.我的这个程序实现的是:创建一个窗口,模拟输入序列号;按下“确定”按钮就可以弹出提示框(正确或者错误)。我试图用三个监视器。1.焦点监视器和2.键盘监视器监视键盘(当输入超过3个字符时自动更改焦点。);3.一个监视器监视按钮button,当按钮被按下,就比对输入的序列号是否与预先写好的一致。但是结果,永远是不一致,即使输入了正确的序列号。我想知道问题出在哪?
2.
Judge.java


public class Judge {     public static void main(String args[])     {         Win win=new Win();         win.setTitle("判断序列号");         win.setBounds(10,10,460,360);     } } 

Win


import java.awt.*; import javax.swing.*; import java.awt.event.*; //该窗口应该包含以下内容: //1.三个文本框,每个文本框输入字符数为4 //2.一个提交按钮 // 3.两个事件处理:焦点处理和键盘事件处理  public class Win extends JFrame    implements ActionListener//Win类用来初始化窗口 {     JTextField text[]=new JTextField[3]; //三个文本框     String str[]=new String[5];//字符串数组     focusPolice focuspolice;    //自定义类2:焦点事件类。     JButton b;        //确定按钮                     //构造函数        Win() {           setLayout(new FlowLayout());        //布局类型为FlowLayout型           b=new JButton("确定");           this.init();           add(b);           text[0].requestFocusInWindow();        //初始化焦点           setVisible(true);            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         }     public void init()     {           focuspolice=new focusPolice();    //创建焦点事件类对象           for(int i=0;i<3;i++)           {               text[i]=new JTextField(4);               text[i].addFocusListener(focuspolice);               text[i].addKeyListener(focuspolice);               str[i]=text[i].getText().toString();               add(text[i]);           }             b.addActionListener(this);     }              public void actionPerformed(ActionEvent ae)             {                 if(ae.getActionCommand().equals("确定"))                 {                 if(str[0]=="aaa"&&str[1]=="bbb"&&(str[2]=="ccc"))                 {                     JOptionPane.showMessageDialog(b,"正确!","提示框",                           JOptionPane.INFORMATION_MESSAGE);                 }                 else                 {                     JOptionPane.showMessageDialog(b,"错误!","提示框",                           JOptionPane.WARNING_MESSAGE);                 }                 }             }            } 

focusPolice.java


import java.awt.event.*; import javax.swing.*;         //既然是要处理事件,那么awt.event必不可少 public class focusPolice implements KeyListener,FocusListener{//不光是需要FocusListener,也需要keyListener        public void keyPressed(KeyEvent e) {               JTextField t=(JTextField)e.getSource();               if(t.getCaretPosition()>=2)                                //实验结果:如果输入的字符个数多于3个,将会自动跳焦。                  t.transferFocus();              }             public void keyTyped(KeyEvent e) {}             public void keyReleased(KeyEvent e) {}             public void focusGained(FocusEvent e) {               JTextField text=(JTextField)e.getSource();               text.setText(null);              }             public void focusLost(FocusEvent e){}  } 

3、4.我输入了我预先设置的答案,仍然提示错误。整个程序并没有报错,但就是和我想要的结果不一样。

5.我试了某个办法,看文本框中的内容有没有传递给str数组,最后发现并没有。说明问题出在init()方法内部,但是我知识有限,花了很长时间还是没找到哪里错了。

友情提示: 问题已经关闭,关闭后问题禁止继续编辑,回答。