Java:当JTextField保持为空时显示错误

时间:2013-02-14 20:48:45

标签: java

我已经完成了这次中期考试的所有编码,但是我遇到了这个问题。主要是,我似乎无法让我的代码在用户将一个JTextField留空时向用户抛出错误消息。我认为我在这里遇到的问题是我已经为每个JTextFields(使用Double.parseDouble)声明了双变量,并且就我所有的搜索而言,没有办法检查空的double值。我尝试了一个奇怪的解决方法,我为相同的JTextfields声明另一组String变量(即它们已经有归属于它们的双变量),然后测试stringVariable.equals(“”),但这也不起作用。

我尝试过直接从JTextField - myJTextField.getText()。equals(“”) - 并且不会抛出我的错误消息。

请记住,我正处于Java课程的开始阶段,所以这应该是一个简单的解决方案。

相关部分的代码如下:

  // IF statement to display error message if no name entered
  // OR no value input for any week's Homework
  // OR no JCheckBox isSelected
  // remember to check against the null string or non-selection of JCheckBox

if ( ( name.equals ( "" ) ) ||

    (homework1JTextField.getText().equals(""))||

    //Test against incorrect range of values for homework grades
    (tut1 < 0 || tut1 > 10)||
    (tut2 < 0 || tut2 > 10)||
    (tut3 < 0 || tut3 > 10)||
    (tut4 < 0 || tut4 > 10)||
    (tut5 < 0 || tut5 > 10)||
    (tut6 < 0 || tut6 > 10)||
    (tut7 < 0 || tut7 > 10)||

    (!discussionBoardZeroJCheckBox.isSelected() &&
     !discussionBoardOneTwoJCheckBox.isSelected() &&
     !discussionBoardThreeFourJCheckBox.isSelected() &&
     !discussionBoardFiveSixJCheckBox.isSelected() &&
     !discussionBoardSevenJCheckBox.isSelected()
    )

   )

  {

  // display error message
  JOptionPane.showMessageDialog( null,
        "Full Name, all homework points and at least one discussion board checkbox are
 all required information!",
        "Missing Information", JOptionPane.ERROR_MESSAGE );
  }

3 个答案:

答案 0 :(得分:0)

我想说为什么不为每个比较组分配中间布尔变量。在if中使用这些布尔值。

打印出布尔值的值,因为如果它非常复杂,这里有很多问题可以解决。

答案 1 :(得分:0)

有多种方法可以解决问题。这是一个。如果用户没有键入内容或仅键入空格,则将JTextField替换为JTextFieldWithDefault以返回超出范围的值(-1)。您现有的代码保持不变,现在可以按预期工作。

public class JTextFieldWithDefault extends JTextField {
    public JTextFieldWithDefault() {
        super();
    }
    @Override
    public String getText() {
        String s = super.getText();
        return s.trim().equals("")?"-1":s;
    }
}

答案 2 :(得分:0)

简单的测试是:

if (homework1JTextField.getText().trim().equals("")) {
    // throw error
}