会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,你那个什么类的看不懂得 展开
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,你那个什么类的看不懂得 展开
4个回答
展开全部
我帮你稍微小改了下 你看看 在根据你自己的情况改
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
}
}
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
}
}
展开全部
应该监听内容改变事件吧
jTextField1.addInputMethodListener(new InputMethodListener() {
public void inputMethodTextChanged(InputMethodEvent evt) {
}
public void caretPositionChanged(InputMethodEvent evt) {
}
});
jTextField1.addInputMethodListener(new InputMethodListener() {
public void inputMethodTextChanged(InputMethodEvent evt) {
}
public void caretPositionChanged(InputMethodEvent evt) {
}
});
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用错监听器了知道吗,实现什么功能就要用相应的监听器,你在输入的时候文本框的焦点根本没改变,你说这有用吗。
这个应该用 KeyListener 啊。所以你的 FocusListener 就应该换成 KeyListener,forcusGained 方法就应该改成 keyTyped (KeyEvent e)。你有api文档可以看一下的。
这个应该用 KeyListener 啊。所以你的 FocusListener 就应该换成 KeyListener,forcusGained 方法就应该改成 keyTyped (KeyEvent e)。你有api文档可以看一下的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以监听那个输入框的状态。。当状态改变时,则判断是否多于5个字符,是的话截取5个字符并将焦点跳到下个输入框。
这样就可以了
这样就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询