FocusListener
在字段中添加一个
触发时focusGained
,将字段的插入符号位置设置为文本的末尾...
field.setCaretPosition(field.getDocument().getLength());
有关更多详细信息,请参阅如何编写焦点侦听器
更新
要选择所有文本,您可以使用...
field.selectAll();
这会将光标移动到末尾。
我过去所做的是创建一个实用程序类(AutoSelectOnFocusManager
例如),它有一个FocusListener
. 基本上,您使用它注册(或取消注册)JTextComponent
s,它会为您管理流程。节省大量重复代码:P
更新了一个简单的例子
做了这个简单的例子来测试评论中的反馈,我以为我也会加入......
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Wackme {
public static void main(String[] args) {
new Wackme();
}
public Wackme() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JTextField field1 = new JTextField("Some text", 20);
JTextField field2 = new JTextField("Some text", 20);
field1.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
System.out.println("Move to end");
JTextField field = ((JTextField)e.getComponent());
field.selectAll();
//field.setCaretPosition(field.getDocument().getLength());
}
});
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
frame.add(field1);
frame.add(field2);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}