【发布时间】:2014-05-26 04:42:01
【问题描述】:
我有一个可编辑的ComboBox,用户可以在其中选择数据库或输入新数据库的名称,然后按Enter 或按钮Create 来创建它。
我发现Editable ComboBox 的一个奇怪行为,如果说在组合框中选择了这样的东西:
然后用户像这样删除它:
并按下Enter key或Create按钮,则此代码不足以检查ComboBox中是否没有选中项:
if (jDatabaseComboBox.getSelectedItem() == null) {
return;
}
所以我选择这样检查:
if (jDatabaseComboBox.getSelectedItem() == null
|| jDatabaseComboBox.getSelectedItem().toString().isEmpty()) {
return;
}
我的问题是:我检查所选项目的方式便宜吗?还有更优雅的方式吗?
这是我最后的做法:
组合框和创建按钮
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 为空,那么它们将变灰。
【问题讨论】:
-
你最后一个选项有什么问题?你在想什么?为什么说便宜?
-
@Braj 在我看来,我的最后一个选择很便宜,并且可能会导致意想不到的错误。更像是我在问它是否会导致我没有考虑到的意外错误,以及是否有更好的方法。
-
一个错误 - 你在检查 null 之前调用了
jDatabaseComboBox.getSelectedItem().toString().trim()。 -
@Braj 如果我尝试将空值转换为字符串,会引发异常吗?
-
如果选中的项目为空,那么调用
null.toString()将导致空指针异常。
标签: java string swing combobox null