当前位置:编程学习 > JAVA >>

一个java小实验,请高手指点一下!

我要设计一个序列表:在一个文本框中输入一定位数的数字后,光标自动跳到下一个文本框。。我们有的时候安装软件不是要输入序列号吗?几个文本框,每个输入了大概4位或5位之后就自动跳到下一个文本框了,就是那种。。。应该用什么实现?哪方面的知识?谢谢各位老大了。
追问:谢谢你哦。帮我想一下啦。用java。你的团队也是java编程交流哦。
答案:您好,根据您的提问中的要求,我写了一个序列号输入框的DEMO,您可以参考一下,希望对您有所帮助:

源码:
import javax.swing.JFrame;
import java.awt.TextField;
import java.awt.event.TextEvent;
import java.awt.event.WindowEvent;
import java.awt.event.TextListener;
import java.awt.event.WindowAdapter;
import java.awt.FlowLayout;
public class TestFocus extends JFrame  {
TextField t1 = null;
TextField t2 = null;
TextField t3 = null;
TextField t4 = null;
TextField T[] = null;
static TestFocus tf = null;

    public TestFocus(){
        initComponents();
        initListener();
       
    }
   
public void initComponents(){
     t1 = new TextField(4);
     t2 = new TextField(4);
     t3 = new TextField(4);
     t4 = new TextField(4);
     T = new TextField[]{t1,t2,t3,t4};
     this.setVisible(true);
     this.setSize(300,100);
     this.setTitle("Demo");
     this.getContentPane().setLayout(new FlowLayout());
 for(int j = 0;j < 4;j++)
     this.getContentPane().add(T[j]);
}   
   
public void initListener(){
    this.addWindowListener(new WindowAdapter(){
        public void windowClosed(WindowEvent e){
            System.exit(0);
        }
       
    });
   
    for(int i = 0;i<T.length;i++){
        System.out.println(i);
        T[i].addTextListener(new TextListener(){

            public void textValueChanged(TextEvent e){
                if(e.getSource()==t1){
                    String s = t1.getText();
                    if(s.length()>3){
                       
                        t2.requestFocus();}
                }
               
                else if(e.getSource()==t2){
                    String s = t2.getText();
                    if(s.length()>3){
                       
                        t3.requestFocus();}
                }
                else if(e.getSource()==t3){
                    String s = t3.getText();
                    if(s.length()>3){
                       
                        t4.requestFocus();}
                }
                else if(e.getSource()==t4){
                    String s = t4.getText();
                    if(s.length()>3){
                       
                        tf.requestFocus();
                        }
                }
            }
           
        });
    }
}
    public static void main(String[] args) {
        tf=new TestFocus();

    }

}

JAVA我不知道有没有getfocus的。用VB的话很容易实现。

在onkeypress事件中:
if len(text1.text)>4 then

    text2.getfocus()

其他一样判断

其实实现方法有很多种,下面给出一种,另有在JTextField上添加KeyListener和自定义Document的方法

下面这种是添加DocumentListener的方法。代码如下:

JTextField tf = new JTextField(5);

tf.getDocument().addDocumentListener(new DocumentListener(){

    public void insertUpdate(DocumentEvent e){

         if(e.getDocument().getLength()>4){//假设为4位

               tf.transferFocus();//传递焦点好像就是这个方法,请查证API

         }

    }

});

给文本框加个onchange事件。 在onchange事件触发的脚本中,满足楼主条件的就执行onfocus(),是需要的控件获得焦点。

上一个:java 和.net在flex方面哪个更有优势
下一个:在Java中用单例模式有什么好处

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,