2013-01-15 19 views
6

Cách cảnh báo người dùng khi dữ liệu đã chỉnh sửa trong giao diện người dùng để tôi có thể cảnh báo họ ghi đè nếu họ tải từ một nguồn khác hoặc nhắc họ lưu? (JavaFX2.2)Làm cách nào để cảnh báo người dùng khi dữ liệu đã chỉnh sửa trong giao diện người dùng để tôi có thể cảnh báo họ ghi đè hoặc nhắc họ lưu? (Java)

Tôi sẽ có hơn 50 trường văn bản trên một số tab và 2 hoặc 3 bảng có nút để thêm và xóa các hàng.

Tôi đã tự hỏi liệu có một cờ boolean 'isDirty' toàn cầu và có thể đặt bộ xử lý hành động trên các nút hay không, nhưng tôi có phải đặt trình xử lý onKeyTyped trên mọi trường văn bản và vùng văn bản không? (nó sẽ làm chậm mọi thứ?). Java có theo dõi xem liệu có trường nào được chỉnh sửa hay không và nếu có, tôi có thể nắm bắt thông tin đó từ nó không?

+3

Có thể sẽ dễ dàng lưu giữ tất cả dữ liệu trong mô hình dữ liệu riêng biệt và so sánh mô hình dữ liệu với nội dung của trường và bảng văn bản với tư cách người nghe tải và lưu hành động. –

+0

Có một mô hình dữ liệu sẽ chỉ làm cho mọi thứ tồi tệ hơn IMHO - mặc dù rõ ràng là tôi có một ArrayList (một 'mô hình dữ liệu') cho các bảng. Đây là các thông số cấu hình của thiết bị. Tôi đang đọc dữ liệu từ thiết bị và đưa nó lên màn hình. Có thể có nhiều thiết bị được kết nối và chúng tôi có thể lưu từ thiết bị này sang thiết bị khác - do đó nguy cơ ghi đè dữ liệu chưa được lưu. – likejiujitsu

+0

Nếu bạn không muốn so sánh hai mô hình, một tùy chọn khác là cập nhật các thẻ của bất kỳ trường nào đã được cập nhật với một lớp mới "bẩn". Sau đó, bạn có thể tìm kiếm bất kỳ trường bẩn nào và xử lý chúng một cách thích hợp. – Zylth

Trả lời

0

Một giải pháp có thể sạch sẽ là có một loại lớp MyWholeDataset được lấp đầy với dữ liệu khi khởi động giao diện người dùng và một đối tượng "nhân bản" khác được sử dụng cho màn hình giao diện người dùng thực tế. Sau đó, mỗi lần người dùng thay đổi dữ liệu từ giao diện người dùng, bạn thay đổi đối tượng thứ hai (nhân bản vô tính). Cuối cùng, bạn nên triển khai giao diện Comparable. Điều này cho bạn biết rằng có sự khác biệt và sau đó bạn có thể có một loại phương thức "getDeltas" trả về một tập hợp các tên trường khác nhau hoặc một bản đồ trả về tên trường dưới dạng khóa và đối tượng chứa cũ/mới các cặp giá trị làm giá trị.

+0

Điều này nghe có vẻ tương tự như bình luận của gilbert ở trên. – likejiujitsu

+0

Có, đó phải là "Cách", liên quan đến OOP thích hợp. Tôi đã chỉ muốn làm rõ vì Gilbert đã không viết làm thế nào để so sánh các mô hình "gốc" và "GUI-sửa đổi". Theo tôi, giải pháp tốt nhất là sử dụng giao diện Comparable, cho phép các mô hình so sánh với chính chúng và cũng cung cấp một phương thức để lấy ra tập hợp các khác biệt. Đó là nó. –

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