2012-10-16 19 views
5

Tôi có 12 bộ lọc cho 12 cột trên một JTable. Mỗi bộ lọc là một TextField của loại JTextField. Mỗi khi người dùng nhập dữ liệu vào bộ lọc hộp văn bản thì tìm kiếm sẽ xảy ra.Có thể có một trình lắng nghe tài liệu duy nhất cho nhiều trường văn bản trong Swing

Ví dụ: Giả sử nói, tôi có 3 cột và 3 hộp văn bản phía trên chúng làm bộ lọc. Bây giờ bất kỳ thứ gì được gõ vào bất kỳ hộp văn bản nào mà việc lọc bảng của tôi phải xảy ra. Nó đang xảy ra tuyệt vời.

╔═════════════╦═════════════╦═════════════╗ 
║ [TextField] ║ [TextField] ║ [TextField] ║ 
╠═════════════╬═════════════╬═════════════╣ 
║    ║    ║    ║ 
╠═════════════╬═════════════╬═════════════╣ 
     ...   ...   ... 
╠═════════════╬═════════════╬═════════════╣ 
║    ║    ║    ║ 
╚═════════════╩═════════════╩═════════════╝ 

Text nghe cho mỗi lĩnh vực văn bản trông như thế này,

textField.getDocument().addDocumentListener(new DocumentListener() { 
    public void changedUpdate(DocumentEvent e) { method(); } 
    public void removeUpdate(DocumentEvent e) { method(); } 
    public void insertUpdate(DocumentEvent e) { method(); } 
}; 

Câu hỏi của tôi là, tôi lặp lại mã này cho tất cả các lĩnh vực 12 văn bản, mà tôi đã không thực sự hạnh phúc. Đây có phải là cách duy nhất chúng ta có? hoặc một số có thể gợi ý cho tôi một cách tốt hơn?

Trả lời

8
  • Chuyển từ lớp ẩn danh sang lớp bên trong và đính kèm cùng người nghe vào từng trường. Nguồn được chứa trong sự kiện
  • Biến nó thành một lớp riêng biệt và tiếp tục sử dụng các trình lắng nghe riêng biệt cho từng trường. Tránh ít nhất là trùng lắp mã

Xem this tutorial cho một ví dụ về một lớp bên trong

+0

1 .. rực rỡ .. đã làm việc như một nét duyên dáng. Không có sự thừa mã ngay bây giờ .. Cảm ơn rất nhiều .. :) – Amarnath

+2

Bạn vẫn có thể làm điều này với một lớp ẩn danh: 'DocumentListener listener = new DocumentListener() {...}; cho (JTextField textfield: fields) {textField.getDocument(). addDocumentListener (trình nghe); } ' –

+0

@WalterLaan đúng, tôi quên rằng tùy chọn – Robin

Các vấn đề liên quan