importjava.awt.*;importjava.applet.*;importjava.awt.event.*;publicclassUseTextEventextendsAppletimplementsActionListener,TextListener{TextFieldt1;TextAreat2;Panelp1;publicvoidinit(){t1=newTextField(25);t2=newTextArea(10,25);t1.addActionListener(this);t1.addTextListener(this);p1=newPanel(newBorderLayout());p1.add(t1,BorderLayout.NORTH);p1.add(t2,BorderLayout.SOUTH);add(p1);}publicvoidtextValueChanged(TextEventt){if(t.getSource()==t1){t1.setText(t1.getText());t1.setCaretPosition(t1.getText().length());//设置输入后的长度t2.setText(t1.getText());}}publicvoidactionPerformed(ActionEvente){if(e.getSource()==t1)t2.setText("");}}这个可以使光标放在文字的后面,但是光标还是会闪动,不稳定。
创新互联专注于企业全网营销推广、网站重做改版、阳曲网站定制设计、自适应品牌网站建设、H5场景定制、商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为阳曲等各大城市提供网站开发制作服务。
1.获得文本框中当前光标的位置 这个可以通过getCaretPosition()方法得到 2.输出文本到当前位置 这个分为两个步骤:1.拼接字符串 2.输出 如: Java代码 // 获得当前光标位置 int cur = show.getCaretPosition(); // 得到光标之后的字符串 String ta
按回车属于文本框提交事件,监听后聚焦到下一个输入框,就完成了切换
最大字符数后切换,即监听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);
}
}
注册一个KeyListener就可以了。
textField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (((JTextField) (e.getSource())).getText().length() = 4) {
nextTextField.requestFocus();
}
}
});
}
javaFx程序运行,光标(焦点)默认显示在最上行的TextField上。
这样我就无法看到输入框的提示字符...
解决方法:
//注册
Button btn = new Button("登录");
HBox hBox = new HBox(10);
hBox.setAlignment(Pos.BOTTOM_RIGHT);
hBox.getChildren().add(btn);
grid.add(hBox, 2, 5);
Scene scene = new Scene(grid, 300, 275);
btn.requestFocus(); //让登录按钮获取焦点
btn.requestFocus(); //一定要在new Scene(grid, 300, 275)之后调用(聪明的你已经猜到使Scene初始化的缘由啦!谈不上好与坏,默认有光标不挺好的,没有的话,不显得javaFx比较2不是哈哈哈)
btn.requestFocus(); 替换为hBox.requestFocus(); 则看不到光标啦!
需要的才是最好的!(第一次在百度上回答问题...百度半天无结果...啊哈哈哈2019年5月3日23点23分)
切换下insert和delete键就可以了。还是先关闭再打开,可以解决问题。