一个java小实验,请高手指点一下!
我要设计一个序列表:在一个文本框中输入一定位数的数字后,光标自动跳到下一个文本框。。我们有的时候安装软件不是要输入序列号吗?几个文本框,每个输入了大概4位或5位之后就自动跳到下一个文本框了,就是那种。。。应该用什么实现?哪方面的知识?谢谢各位老大了。
追问:谢谢你哦。帮我想一下啦。用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 thentext2.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(),是需要的控件获得焦点。