java 如何 按回车 光标换到下个输入框

java小程序不是网页或者设定输入固定字符数后自动跳转到下个输入框... java 小程序不是网页
或者设定输入固定字符数后自动跳转到下个输入框
展开
 我来答
百度网友9308069
推荐于2016-04-18 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1910万
展开全部

按回车属于文本框提交事件,监听后聚焦到下一个输入框,就完成了切换

最大字符数后切换,即监听Text长度在聚焦切换

特别写了个回车互相切换的applet例子,

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.BoxLayout;

import javax.swing.JApplet;

import javax.swing.JLabel;

import javax.swing.JTextField;

public class Test extends JApplet {

private static final long serialVersionUID=1802199483736051124L;

public JTextField input_field,result_field; 

public JLabel input_label,result_label;

@Override

public void init(){

setSize(400, 200);

setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));

input_label=new JLabel("表达式输入"); 

add(input_label);

input_field=new JTextField("",10);

input_field.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

result_field.setText(input_field.getText());

result_field.grabFocus();

}

});

add(input_field);

result_label=new JLabel("计算结果");

add(result_label);

result_field=new JTextField("",10);

result_field.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

input_field.setText(result_field.getText());

input_field.grabFocus();

}

});

add(result_field);

}

}

sly85264adc68
2015-10-10 · 超过28用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:54.2万
展开全部
首先你说的是JavaEE还是JavaSE,二者的方法是不同的,说白了,一个是写网站的,一个是写应用的,如果是写Web网站的按回车焦点换到下一个输入框就需要用JS来实现,应用就需要纯Java代码了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2011-12-27 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1616万
展开全部
目前的想法是
将控件组成一个列表。侦听按钮事件。
当输入到固定字符,或按回车,使下一个组件,获得焦点。

但这个方法不是很好。

最好的办法是满足上述条件时,让它执行按tab的动作,自动的去找该获得焦点的控件。
这个我再看看。

找到方法了。
可以通过容器的FocusTraversalPolicy 获得当前对象的下一个该获得焦点的对象。
看下边的代码。当输入回车或输入满5个字符就会使下一个控件获得焦点。
如果要自定义这个顺序。需要重写FocusTraversalPolicy 类
这个例子只侦听了按钮释放的事件,所以输入过快,焦点有可能不移动。
------------------------------------------------------------------------------------------------
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FocusTraversalPolicy;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Demo extends JFrame {
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;

public Demo() {

getContentPane().setLayout(null);

textField = new JTextField();
FocusTraversalPolicy policy = getFocusTraversalPolicy();
textField.addKeyListener(new nextKeyEvent(this, textField, policy));
textField.setBounds(12, 10, 96, 19);

getContentPane().add(textField);
textField.setColumns(10);

textField_1 = new JTextField();
textField_1.setBounds(12, 68, 96, 19);
textField_1.addKeyListener(new nextKeyEvent(this, textField_1, policy));
getContentPane().add(textField_1);
textField_1.setColumns(10);

textField_2 = new JTextField();
textField_2.setBounds(12, 39, 96, 19);
textField_2.addKeyListener(new nextKeyEvent(this, textField_2, policy));
getContentPane().add(textField_2);
textField_2.setColumns(10);

textField_3 = new JTextField();
textField_3.setBounds(12, 94, 96, 19);
textField_3.addKeyListener(new nextKeyEvent(this, textField_3, policy));
getContentPane().add(textField_3);
textField_3.setColumns(10);

setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(400, 300);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screenSize.width - getWidth()) / 2,
(screenSize.height - getHeight()) / 2);
setResizable(false);
setVisible(true);
}

class nextKeyEvent extends KeyAdapter {
private Container comp = null;
private JTextField text = null;
private FocusTraversalPolicy policy = null;

public nextKeyEvent(Container comp, JTextField text,
FocusTraversalPolicy policy) {

this.comp = comp;
this.text = text;
this.policy = policy;
}

public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
nextFocus();
}
if (text.getText().length() == 5) {
nextFocus();
}
}

private void nextFocus() {
JTextField next = (JTextField) policy.getComponentAfter(comp, text);
next.grabFocus();
}
}

public static void main(String[] args) {
new Demo();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不惑711
2011-12-27
知道答主
回答量:24
采纳率:0%
帮助的人:3.6万
展开全部
描述清楚点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
勇敢的心yc
2011-12-26
知道答主
回答量:22
采纳率:0%
帮助的人:16.1万
展开全部
需求描述不清,无从下手。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式