Có phương pháp nào để trả về vị trí của ký tự trong JTextField hay không. Những gì tôi có nghĩa là bởi vì nếu tôi có một JTextField với một số giá trị trong đó. Ví dụ: trường chứa giá trị ABCDEFJ. Người dùng quyết định đặt con trỏ ngay sau ký tự 'C' để nhập một giá trị mới. Có phương pháp nào để có được vị trí nơi anh ấy nhập ký tự mới không. Trong ví dụ này, đó sẽ trả về một 3.Tìm vị trí văn bản con trỏ trong JTextField
6
A
Trả lời
13
JTextField.getCaretPosition()
JTextField.setCaretPosition(int pos)
1
Dưới đây là câu trả lời của bạn:
http://docs.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html#getCaretPosition%28%29
Sử dụng một ActionListener để chờ đợi một hành động. Khi người dùng nhập thứ gì đó, hãy tìm vị trí dấu mũ.
2
Hãy thử lấy sử dụng CaretListener
giao diện:
public class A extends JFrame implements CaretListener
{
//Assume you have a text field.
public A()
{
JTextField field = new JTextField("bla bla");
field.addCaretListener(this);
.....
}
public void caretUpdate(CaretEvent e)
{
int index = e.getDot();
.....
}
}
getDot()
phương pháp CaretEvent
lớp trả về kết quả mà bạn mong muốn, bạn có thể gán nó vào một biến toàn cầu để sử dụng sau trên.
Trường hợp sử dụng thực tế ở đây là gì? Nó trông giống như một 'JSpinner' (hoặc có lẽ là một JComboBox' có thể chỉnh sửa) sẽ là một thành phần tốt hơn để sử dụng. –
Đây không phải là một câu hỏi hay vì bạn đang yêu cầu một giải pháp mã cụ thể thay vì cách thực hiện hành vi. Giải pháp thực tế cho hành vi mong muốn của bạn có thể liên quan đến một cách tiếp cận hoàn toàn khác. Ví dụ, nếu bạn đang cố gắng kiểm tra đầu vào của JTextField trước khi nó hoàn thành, thì có lẽ những gì bạn thực sự muốn sử dụng là một DocumentFilter. Vì vậy, trong tương lai, xin vui lòng cho chúng tôi biết thêm về vấn đề tổng thể mà bạn muốn giải quyết, và ít hơn về cách cụ thể bạn đang cố gắng giải quyết nó. –