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)
và 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 JComboBox
và JTextField
khi được chọn và setEnabled(false)
khi không.
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