2009-10-20 75 views
9

Sự khác nhau giữa setEditable() và setEnabled() trong jCombobox là gì? Một combobox có thể chỉnh sửa được nhưng không được kích hoạt hay không và cách khác? Trong trường hợp nào bạn sẽ sử dụng phương pháp nào?JCombobox có thể chỉnh sửa được bật

Bạn có thể tưởng tượng một tình huống mà bạn sẽ làm setEnabled (false) cùng với setEditable (true)?

Trả lời

20

setEditable(boolean) xác định xem JComboBox có cho phép nhập văn bản ngoài việc chọn giá trị qua kéo xuống hay không.

setEnabled(boolean) xác định xem tất cả JComboBox đều có thể tương tác được không. Nếu nó không được kích hoạt, nó sẽ được hiển thị màu xám.

Một JComboBox thể có bất kỳ kết hợp của các đặc tính này -

  • setEditable(true) + setEnabled(true) = JComboBox cho phép nhập văn bản ngoài để kéo xuống giá trị và người dùng có thể tương tác với nó.
  • setEditable(false) + setEnabled(true) = JComboBox chỉ cho phép các giá trị từ kéo xuống được chọn và người dùng có thể tương tác với nó.
  • setEditable(true) + setEnabled(false) = JComboBox cho phép nhập văn bản ngoài giá trị kéo xuống nhưng người dùng không thể tương tác với giá trị đó.
  • setEditable(false) + setEnabled(false) = JComboBox chỉ cho phép các giá trị từ kéo xuống được chọn và người dùng không thể tương tác với nó.

Một tình huống mà bạn có thể có một JComboBox với setEnabled(false)setEditable(true) sẽ là nơi bạn muốn có một JComboBox cho phép nhập văn bản, nhưng dưới hình thức là một tiểu bang nơi giá trị của JComboBox không áp dụng. Bạn thường sẽ có một số hành động mà có thể gọi setEnabled(true) trên JComboBox sau khi nó trở thành áp dụng.

Ví dụ: nếu bạn có thứ gì đó giống như mẫu nhà ở sinh viên, có thể có câu hỏi trên biểu mẫu như 'Bạn có cần chỗ đậu xe không?' với số JCheckbox. Có JComboBox cho thương hiệu ô tô và số JTextFied cho số biển số xe. Bạn có thể có JComboBox được điền trước với các thương hiệu xe hơi phổ biến - Ford, Chevy, Toyota, Honda, v.v. nhưng quyết định bạn cũng muốn cho phép chỉnh sửa trong trường hợp ai đó sở hữu một cái gì đó như Lamborghini (và đang ở trong nhà ở sinh viên - vâng, đúng ...). Giá trị cho thương hiệu xe hơi và số tấm giấy phép là không cần thiết trừ khi người dùng chọn JCheckBox biểu thị rằng họ cần một chỗ đậu xe.Bạn sẽ thêm người nghe vào số JCheckBox gọi số setEnabled(true) trên JComboBoxJTextField khi được chọn và setEnabled(false) khi không.

+0

JComboBox không thể chỉnh sửa hiển thị mục đã chọn trong trường, nhưng không thể sửa đổi lựa chọn. http://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html#setEditable-boolean- – arley

1

SetEnable() - Bật hộp kết hợp để các mục có thể được chọn.

SetEditable() - Xác định xem trường JComboBox có thể chỉnh sửa hay không.

7

Nếu bạn gọi setEditable(true), trường văn bản của JComboBox có thể chỉnh sửa được, cho phép người dùng nhập văn bản bằng bàn phím ngoài việc chọn một mục từ danh sách.

Nếu bạn gọi setEnabled(false), toàn bộ điều khiển sẽ bị tắt, ngăn người dùng tương tác với nó.

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