2010-04-18 19 views
5

Tôi có một số JCheckBox không nên được người dùng kiểm tra khi một trường nào đó khác trống.Cách tốt nhất để triển khai từ chối thay đổi giá trị của người dùng trong Swing?

Vì vậy, bây giờ tôi muốn xuất hiện lỗi và sau đó đặt lại hộp kiểm (Tôi đã vô hiệu hóa hộp kiểm, nhưng kết nối với trường khác không rõ ràng và văn bản chú giải công cụ IMO không hiển thị đủ).

Cách chính xác để thực hiện điều đó trong Swing là gì? Thông qua một số PropertyVetoException? Tôi ném nó ở đâu và bắt nó ở đâu? Ý tưởng đầu tiên của tôi (có thể xấu xí) là thêm một số ChangeListener tự hiển thị cửa sổ bật lên và đặt lại giá trị.

Chỉnh sửa: Câu hỏi là về Nikki (ảnh chụp màn hình bên dưới), một ứng dụng tôi đang phát triển mà gắn thẻ địa lý hình ảnh và xuất chúng sang định dạng KMZ của Google Earth. Hộp kiểm được sử dụng để chọn hình ảnh để đưa vào xuất. Nhưng điều này đòi hỏi các hình ảnh phải được gắn thẻ trước (lần lượt yêu cầu dấu thời gian hoặc chuyển nhượng thủ công). Tôi không nghĩ rằng yêu cầu này có thể được thực hiện rõ ràng thông qua giao diện người dùng.

alt text http://www.brazzy.de/nikki/screenshot_nikki.png

+2

Điều này nghe có vẻ như đó là thiết kế giao diện người dùng kém nếu kết nối giữa hai phần tử biểu mẫu không rõ ràng. Nếu sự sẵn có của một người trực tiếp phụ thuộc vào người khác, tại sao họ không ở bên nhau? –

+0

@Conspicuous Compiler: xem chỉnh sửa; Tôi không nghĩ rằng điều này là thực sự có thể; ngay cả khi họ ở bên cạnh nhau, yêu cầu không rõ ràng –

Trả lời

2

Tôi chỉ đơn giản là sẽ vô hiệu hóa các hộp kiểm tra và thêm một thông báo giải thích lý do tại sao lựa chọn là không có sẵn. Một cách hay để hiển thị thông báo là hiển thị một dấu chấm than nhỏ bên cạnh hộp kiểm và đặt thông điệp vào một chú giải công cụ.

Bật lên ngoại lệ thường cảm thấy sai vì users don't read error messages. Đối với hầu hết người dùng, cửa sổ thông báo lỗi có nghĩa là ứng dụng đã làm điều gì đó sai, trong trường hợp của bạn, đó là hành vi bình thường.

Chỉnh sửa nếu bạn nhấn mạnh vào việc bật hộp kiểm, một cách khác để hiển thị cho người dùng rằng một số thông tin bị thiếu sẽ là làm sáng tỏ dữ liệu bị thiếu. Ví dụ. nếu vĩ độ và kinh độ bị thiếu và người dùng nhấp vào xuất, hãy đặt nền màu đỏ trên các trường này trong một giây. Điều này sẽ hiển thị rõ ràng người dùng bị thiếu.

Trong màn hình này, bạn không muốn đặt chuột lên vòng tròn màu đỏ để hiểu điều gì đang diễn ra?

validation http://www.vogella.de/articles/EclipseDataBinding/images/validation10.gif

+0

Người dùng không đọc các thông báo lỗi rõ ràng, nhưng họ đọc chú giải công cụ kèm theo dấu chấm than với ý nghĩa hoàn toàn không rõ ràng? Xin lỗi, tôi không mua nó ... –

0

Trường chỉ đơn giản là được phép vô hiệu hóa hộp kiểm. Nếu khớp nối không trực quan thì bố cục GUI có thể phải được xem xét lại.


EDIT: Tôi đã chạy nó từ trang của bạn và tôi tin rằng vấn đề ở đây là bạn thực sự có bước thứ ba và thứ tư ngoài việc chọn thư mục, chọn hình ảnh. Bước thứ ba là xác thực hình ảnh và thứ tư là chọn hình ảnh để xuất. Tôi nghĩ rằng vấn đề của bạn là điều này không được chuyển tải rõ ràng trong cách bố trí hiện tại và điều đó phản ánh trong câu hỏi của bạn.

Tôi khuyên bạn nên tạo một cột riêng có chứa hộp kiểm cho mỗi hình ảnh và hộp kiểm THAT đó bị vô hiệu hóa cho đến khi hình ảnh vượt qua xác thực (bước 3). Có lẽ với một văn bản giải thích trong cột về lý do tại sao hình ảnh chưa trôi qua.

+0

Tôi không nghĩ rằng điều này có thể được cố định thông qua bố trí; xem chỉnh sửa câu hỏi. –

1

Tôi không nghĩ rằng việc xuất khẩu JCheckBox sẽ bị tắt hoàn toàn. Thay vào đó, xuất khẩu JButton chính nó nên kiểm tra danh sách xuất khẩu hiện tại và hiển thị bất kỳ mục bất thường theo cách cho phép điều hướng đến một bức ảnh được chọn. Nếu tất cả các mục nhập đều chính xác, Xuất sẽ tiếp tục như bình thường.

Hợp đồng bổ sung: Bạn cho rằng bạn có quyền giữ giao diện ở chế độ không có phương thức càng tốt. Mô hình của tôi cho điều này sẽ là các tệp chưa lưu khi thoát một trình soạn thảo hoặc các thay đổi không được cam kết khi đóng một dự án trong một IDE.

Nếu đó là dòng trạng thái ở cuối cửa sổ, bạn có thể cho biết số lượng ảnh hiện được chọn để xuất, thêm số liệu nếu bất kỳ vẫn cần mã hóa địa lý.

+0

Chắc chắn là một giá trị thay thế xem xét. Nhưng tôi sẽ hơi sợ làm phiền người dùng bằng cách làm cho anh ta quay trở lại "sửa chữa" một cái gì đó chỉ khi anh nghĩ anh sẽ thấy kết quả. –

+0

Đó là một vấn đề thú vị. Trang web của bạn rất đẹp, BTW. – trashgod

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