我有一个可编辑的ComboBox
,用户可以在其中选择数据库或输入新数据库的名称,然后按Enter
或按钮Create
进行创建。
我发现Editable ComboBox
是一种奇怪的行为,如果在组合框中选择了这样的东西:
然后用户将其删除:
并按下Enter key
或Create
按钮,此代码不足以检查ComboBox
中是否有选定项目:
if (jDatabaseComboBox.getSelectedItem() == null) {
return;
}
所以我选择这样检查:
if (jDatabaseComboBox.getSelectedItem() == null
|| jDatabaseComboBox.getSelectedItem().toString().isEmpty()) {
return;
}
我的问题是:我的方式是便宜地检查所选项目,是否有更优雅的方式?
以下是我最终的表现:
ComboBox和创建按钮
private void jDatabaseComboBoxActionPerformed(java.awt.event.ActionEvent evt)
{
final String selectedDatabaseName = jDatabaseComboBox.getSelectedItem().
toString().trim();
if (selectedDatabaseName.isEmpty()) {
return;
}
if (databaseAlreadyExistsInServer(selectedDatabaseName)) {
_currentDatabase = new SQLDatabase(selectedDatabaseName);
updateTableComboBoxes();
} else {
createANewDatabase(selectedDatabaseName);
updateDatabaseComboBoxes();
}
System.out.println();
}
删除按钮
private void jDeleteDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt) {
final String selectedDatabaseName = jDatabaseComboBox.getSelectedItem().
toString().trim();
if (selectedDatabaseName.isEmpty()) {
return;
}
if (!databaseAlreadyExistsInServer(selectedDatabaseName)) {
return;
}
deleteDatabase(selectedDatabaseName);
updateDatabaseComboBoxes();
System.out.println();
}
我不再检查null
因为我已经拥有它,所以如果comboBoxes
为空,那么它们将会变灰。
答案 0 :(得分:1)
更好的方法:
comboBox.getSelectedIndex()
如果值为空或无效或无效(匹配)值,则返回-1。
在此处查找示例代码Editable ComboBox
- 编辑 -
单击删除按钮
if (jDatabaseComboBox.getSelectedIndex() == -1) {
System.out.println("Please select a database name.");
} else {
System.out.println("database name is deleted successfully.");
}
答案 1 :(得分:1)
为您的支票添加修剪
jDatabaseComboBox.getSelectedItem().toString().trim().isEmpty()
仅检查空格作为输入。还可以尝试使用lang of laache的StringUtils。您可以只用一行替换整行
if(StringUtils.isEmpty(jDatabaseComboBox.getSelectedItem()))
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html