if语句检查Swing组件是否为空

时间:2014-12-10 18:51:42

标签: java swing user-interface if-statement

我正在编写if语句来检查我的GUI中的swing组件(JtextField& JcomboBox(x2))是否为空。我最初只是为JTextField和两个JComboBox为空的场景做了一个if语句,因此出现了dispay错误对话框:

  if (NameOfCruise.equals("") && startLValue.equals("") && endLValue.equals("")) {
  JOptionPane.showMessageDialog(Frame2,
         "Please Complete Form.", "Error",
         JOptionPane.ERROR_MESSAGE);
               System.out.print("Please Complete Form.");
               Frame2.setVisible(true);
                    } 

然而,经过进一步思考,我意识到还有更多的场景我还没有考虑过。我意识到我需要针对以下场景的错误消息: 1. Cruise Name,startL或endL值都是空的。 2.如果Cruise Name留空,但同时选择StartL和EndL。 3.如果Cruise Name& StartL保持空白但选择了EndL。 4.如果Cruise Name& EndL保持空白但选择了StartL。

&安培;可能还有更多我尚未实现的东西。我开始实现上述if语句,但遇到了一个问题。

到目前为止,这是我的代码:

 // 2. Error message CruiseName left empty but StartL and EndL are both selected.
  if(NameOfCruise.equals("") && !startLValue.equals("") || !endLValue.equals("")){
          JOptionPane.showMessageDialog(Frame2,
          "Please enter Cruise Name.", "Error",
             JOptionPane.ERROR_MESSAGE);
             System.out.print("Name of Cruise not entered. Please enter Cruise Name.\n");
             Frame2.setVisible(true);
                        } 

 //  3. Error message if Name of Cruise & StartL left empty but EndL is selected.
  if(startLValue.equals("") && NameOfCruise.equals("") || !endLValue.equals("")){
  JOptionPane.showMessageDialog(Frame2,
         "Please Select a Start Location.", "Error",
         JOptionPane.ERROR_MESSAGE);
         System.out.print("Select a start location.\n");
         Frame2.setVisible(true);
              } 

问题:

如果查看上面的代码,我测试的方式(3)是将Cruise名称和StartL位置留空并输入EndL值。但是我想出任务(2)中的错误对话框 - 这是合理的,因为游轮名称是空的。

问题(S): 1.如何编写if语句以便为每个方案显示相应的错误消息?目前,我收到了每条消息的两个错误对话框。 2.是否有更好,更有效的方法来编码这些场景,而不是为每个案例编写if语句。 你能说出我失踪的任何情景吗?

3 个答案:

答案 0 :(得分:1)

我要做的是,而不是制作一万亿个不同的if语句,而不是制作3. StartL一个用于EndL,一个用于NameOfCruise。它更紧凑,更简单,您不必为每个不同的组合方案制作if语句。

答案 1 :(得分:0)

一个非常抽象的答案,每个输入有三个输入,两个状态(空或不),导致八种不同的情况,但其中一些是正常的。

将三个布尔值映射到整数0..7。创建一个包含8个条目的Sting []表,null表示无错误,带有相应错误消息的非null条目,并根据映射的结果进行选择。

表通常是简化应用程序逻辑的好方法。

答案 2 :(得分:0)

根据我的个人经验,我会尝试分别检查每个条件,一个接一个。如果条件成立:很好。如果不是,我会存储建议的操作(“请输入游轮名称”,“请选择开始位置”等),即在字符串列表中。

检查完所有条件并且字符串列表不为空后,您可以显示JOptionPane并使用列表中的信息填充它。因此,不应满足的每个条件都应打印在窗格内。