如何检查可编辑组合框中的选定项是否为空

时间:2014-04-11 21:02:56

标签: java string swing combobox null

我有一个可编辑的ComboBox,用户可以在其中选择数据库或输入新数据库的名称,然后按Enter或按钮Create进行创建。

我发现Editable ComboBox是一种奇怪的行为,如果在组合框中选择了这样的东西:

1

然后用户将其删除:

2

并按下Enter keyCreate按钮,此代码不足以检查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为空,那么它们将会变灰。

2 个答案:

答案 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