Đối với hầu hết GUI tôi đã sử dụng, khi điều khiển chứa văn bản lấy tiêu điểm, toàn bộ nội dung của điều khiển được chọn. Điều này có nghĩa là nếu bạn chỉ mới bắt đầu nhập, bạn hoàn toàn thay thế các nội dung cũ.Có cách nào dễ dàng để thay đổi hành vi của điều khiển Java/Swing khi nó được lấy nét không?
Ví dụ: Bạn có điều khiển xoay được khởi tạo với giá trị bằng không. Bạn tab vào nó và gõ "1" Giá trị trong điều khiển bây giờ là 1.
Với Swing, điều này không xảy ra. Văn bản trong điều khiển không được chọn và carat xuất hiện ở đầu này hoặc phần khác của văn bản hiện tại. Tiếp tục ví dụ trên:
Với Swing JSpinner, khi bạn đặt tab vào điều khiển xoay, carat ở bên trái. Bạn nhập "1" và giá trị trong điều khiển bây giờ là 10.
Điều này khiến tôi, (và người dùng của tôi) lên tường và tôi muốn thay đổi nó. Thậm chí quan trọng hơn, tôi muốn thay đổi nó trên toàn cầu để hành vi mới áp dụng cho JTextField, JPasswordField, JFormattedTextField, JTextArea, JComboBox, JSpinner, v.v. Cách duy nhất tôi đã tìm thấy để làm điều này để thêm một FocusAdapter cho mỗi điều khiển và ghi đè phương thức focusGained() để làm điều đúng [tm].
Có một cách dễ dàng hơn và ít dễ vỡ hơn. Xin vui lòng?
EDIT: Một phần thông tin bổ sung cho trường hợp cụ thể này. Biểu mẫu tôi đang làm việc được tạo ra bằng cách sử dụng trình thiết kế biểu mẫu của Idea. Điều đó có nghĩa là tôi thường không viết mã để tạo ra các thành phần. Có thể nói với Idea rằng bạn muốn tự tạo chúng, nhưng đó là một rắc rối mà tôi muốn tránh.
Phương châm: Tất cả những người lập trình giỏi về cơ bản đều lười biếng.
Tôi đã tìm thấy giải pháp đáp ứng nhu cầu của mình. Nó được đăng như một câu trả lời. –