会java的高手来一下,简单但是不知道为什么?在线等

简单的一段代码:importjava.awt.*;importjava.awt.event.*;classFocusextendsFrameimplementsFocus... 简单的一段代码:

import java.awt.*;
import java.awt.event.*;

class Focus extends Frame implements FocusListener
{
Label lb;
TextField text1,text2,text3;
Focus()
{
super("序列号输入");
setSize(500,400);
setVisible(true);
lb=new Label("请输入序列号:");
text1=new TextField(5);
text2=new TextField(5);
text3=new TextField(5);
setLayout(new FlowLayout());
add(lb);
add(text1);
add(text2);
add(text3);
show();
text1.addFocusListener(this);
text2.addFocusListener(this);
text3.addFocusListener(this);

}

public void focusGained(FocusEvent e)
{

if(e.getSource()==text1)
{
String a=text1.getText();
if (a.length()==5)
{
text2.requestFocus();
text3.setText(String.valueOf(a.length()));
}
}

if(e.getSource()==text2)
{
String b=text2.getText();
if (b.length()>5)
{
text3.requestFocus();
}
}

}

public void focusLost(FocusEvent e)
{

}

public static void main(String[] args)
{
Focus fo=new Focus();

}
}
问题出在:当我在text1输入数字时,明明已经输入6位数了,但是它就是没跳转到text2,我自己也做了很多的实验,问题好像是当焦点在text1是,a.length()好像一直是0(就是一开始什么都没输入的时候为0),哪位朋友能够解决啊。。谢谢乙!
l楼的太复杂了。有没简单点的。。这个问题应该不用这么难吧。而且是刚学java,你那个什么类的看不懂得
展开
 我来答
◥◣梦飞◢◤e22
2010-04-08 · TA获得超过713个赞
知道小有建树答主
回答量:411
采纳率:0%
帮助的人:164万
展开全部
我帮你稍微小改了下 你看看 在根据你自己的情况改
import java.awt.*;
import java.awt.event.*;

import javax.swing.JOptionPane;

class Focus extends Frame implements FocusListener,KeyListener
{
Label lb;
TextField text1,text2,text3;
Focus()
{
super("序列号输入");
setSize(500,400);
setVisible(true);
lb=new Label("请输入序列号:");
text1=new TextField(5);
text2=new TextField(5);
text3=new TextField(5);
setLayout(new FlowLayout());
add(lb);
add(text1);
add(text2);
add(text3);
show();
text1.addFocusListener(this);
text2.addFocusListener(this);
text3.addFocusListener(this);
//按下键盘事件注册
text1.addKeyListener(this);
text2.addKeyListener(this);
text3.addKeyListener(this);
}

public void focusGained(FocusEvent e)
{

if(e.getSource()==text1)
{
String a=text1.getText();
if (a.length()==5)
{
text2.requestFocus();
text3.setText(String.valueOf(a.length()));
}
}

if(e.getSource()==text2)
{
String b=text2.getText();
if (b.length()>5)
{
text3.requestFocus();
}
}

}

public void focusLost(FocusEvent e)
{

}

public static void main(String[] args)
{
Focus fo=new Focus();

}

//每按下一次键盘 就会判断
public void keyPressed(KeyEvent e) {

// TODO Auto-generated method stub
if(e.getSource()==text1){
String a=text1.getText();
if (a.length()==5)
{
text2.requestFocus();

}
}

if(e.getSource()==text2){
String a=text2.getText();
if (a.length()==5)
{
text3.requestFocus();

}
}

if(e.getSource()==text3){
String a=text3.getText();
if (a.length()==5)
{
JOptionPane.showMessageDialog(this, "注册完成");

}
}
}

public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}

public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}
}
w1985g
2010-04-08 · TA获得超过1633个赞
知道小有建树答主
回答量:1190
采纳率:100%
帮助的人:1033万
展开全部
应该监听内容改变事件吧
jTextField1.addInputMethodListener(new InputMethodListener() {
public void inputMethodTextChanged(InputMethodEvent evt) {

}
public void caretPositionChanged(InputMethodEvent evt) {

}
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2010-04-09 · TA获得超过5621个赞
知道大有可为答主
回答量:1459
采纳率:0%
帮助的人:1370万
展开全部
你用错监听器了知道吗,实现什么功能就要用相应的监听器,你在输入的时候文本框的焦点根本没改变,你说这有用吗。
这个应该用 KeyListener 啊。所以你的 FocusListener 就应该换成 KeyListener,forcusGained 方法就应该改成 keyTyped (KeyEvent e)。你有api文档可以看一下的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fjhuanghua
2010-04-08 · TA获得超过124个赞
知道答主
回答量:70
采纳率:0%
帮助的人:62万
展开全部
可以监听那个输入框的状态。。当状态改变时,则判断是否多于5个字符,是的话截取5个字符并将焦点跳到下个输入框。
这样就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式