Java 如何检查可编辑组合框中的选定项是否为空
我有一个可编辑的Java 如何检查可编辑组合框中的选定项是否为空,java,string,swing,combobox,null,Java,String,Swing,Combobox,Null,我有一个可编辑的组合框,用户可以在其中选择一个数据库或键入一个新数据库的名称,然后按Enter或按钮Create来创建它 我发现,可编辑组合框有一个奇怪的行为,如果说组合框中选择了如下内容: if (jDatabaseComboBox.getSelectedItem() == null || jDatabaseComboBox.getSelectedItem().toString().isEmpty()) { return; } 然后用户将其删除,如下所示: if (j
组合框
,用户可以在其中选择一个数据库或键入一个新数据库的名称,然后按Enter
或按钮Create
来创建它
我发现,可编辑组合框
有一个奇怪的行为,如果说组合框中选择了如下内容:
if (jDatabaseComboBox.getSelectedItem() == null
|| jDatabaseComboBox.getSelectedItem().toString().isEmpty()) {
return;
}
然后用户将其删除,如下所示:
if (jDatabaseComboBox.getSelectedItem() == null
|| jDatabaseComboBox.getSelectedItem().toString().isEmpty()) {
return;
}
并按下输入键
或创建
按钮,则此代码不足以检查组合框中是否没有选定的项目
:
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();
}
删除按钮
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
,因为我有它,所以如果组合框
为空,则它们将变灰。更好的方法:
comboBox.getSelectedIndex()
如果值为空或null或无效(匹配)值,则返回-1。
在这里找到示例代码
--编辑-- 单击“删除”按钮
if (jDatabaseComboBox.getSelectedIndex() == -1) {
System.out.println("Please select a database name.");
} else {
System.out.println("database name is deleted successfully.");
}
给你的支票加上装饰
jDatabaseComboBox.getSelectedItem().toString().trim().isEmpty()
只检查是否有空格作为输入。还可以尝试使用apache语言的StringUtils。您可以用一行替换整行
if(StringUtils.isEmpty(jDatabaseComboBox.getSelectedItem()))
上一个选项有什么问题?你在想什么?你为什么说它便宜?@Braj我觉得我的最后一个选择很便宜,可能会引起意想不到的bug。更像是我在问它是否会导致我没有解释的意外错误,以及是否有更好的方法。一个错误-您调用了
jDatabaseComboBox.getSelectedItem().toString().trim()
在检查null之前。@Braj如果我尝试将null值转换为字符串,会引发异常吗?如果所选项为null,则调用null.toString()
将导致空指针异常。如果有人键入新的数据库名称并按下Enter
键或Create
按钮,则该异常不起作用,因为新名称不是组合框的项目,因此返回-1。此示例检查是否选择了有效值。它不用于接受新值,因为您要创建新的数据库名称。您的要求与此有所不同,但如果将来您希望验证静态可编辑组合框中的值,您仍然可以使用此方法。至少您可以在删除选项的情况下使用此条件。情况如何?如果选择了现有数据库名称,请单击“创建”按钮。在这种情况下,您也可以使用此条件。我将使用它作为删除按钮谢谢。关于Create
按钮如果我已经有一个数据库,说“apples”,用户键入“apples”,然后按Enter
或Create
我不能让它对照组合框的值进行检查,因为数据库可能已经断开连接。在这种情况下,我需要直接与服务器检查数据库是否存在。