2017-10-05 9 views
0

私は、ユーザーがJTextFieldsで値を入力し、その値をSQLデータベースに送るボタンを押します。JComboBoxとJTextFieldsはequals()で動作しません

JComboBox<String> dropRG = new JComboBox<String>(); 
dropRG.addItem("Children's Fiction"); 
dropRG.addItem("Fantasy"); 
dropRG.addItem("Horror"); 
dropRG.setEditable(true); 
dropRG.setBounds(425, 210, 180, 27); 
panel_1.add(dropRG); 

JButton btnSubmit = new JButton("Submit"); 
    btnSubmit.addActionListener(new ActionListener() { 
     String afValue = AF.getText().trim(); 
     String alValue = AL.getText().trim(); 
     String titleValue = titleBook.getText().trim(); 
     String dropRGValue = dropRG.getSelectedItem().toString(); 

     public void actionPerformed(ActionEvent e) { 
      if (afValue.equals(null) || alValue.equals(null) || titleValue.equals(null) || dropRGValue.equals(null)){ 
       JOptionPane.showMessageDialog(null, "Can't have empty fields!"); 
      } 
      else { 
       //SQL code 
       JOptionPane.showMessageDialog(null, "Entry Saved!"); 
      } 
     } 
    }); 
btnSubmit.setBounds(270, 315, 117, 29); 
panel_1.add(btnSubmit); 

値に対して3つのJTextFieldがあり、挿入された値に対して編集可能なJComboBoxが1つあります。私はtry/catchブロックで上記のコードを使用していましたが、例外がスローされることはありませんでした。上記のコードは過去にはうまく動作していました(しかし、見えない状況のために、ゼロから)、コードはまったく同じではありません。コードの結果は常に「Entry Saved!」になります。空のフィールド(空のJComboBox、編集可能なので)でも

JComboBoxが編集可能でなく、dropRgValue.equals()もそこになかった場合は、コードはまだ機能しませんでした。

私はアマチュアのプログラマーですが、何か重要なことを見逃しているかもしれませんが、これはうまくいかないほど簡単です。

+2

文字列値はnullにすることはできません、のようなより多くの何かをすることです。空文字列 '' ''と '' null''型の文字列とは異なります。また、上記のコードは一度も動作していないでしょうし、常にelseステートメントを実行したか、またはNPEで終了します。だからあなたはそれを元に戻すときにそれを変更したに違いありません。 –

+0

私はあなたがnull値を持っていなくても空ではないと信じています。空もチェックする – soorapadman

答えて

3

まず、あなたは値がActionListenerが作成された時点で、テキストフィールドにある、これまでどのような割り当て、あなたが実際にはより理にかなっている、actionPerformedメソッドが呼び出された時点での値を取得することはありません

JTextField#getTextnull

を返す可能性があるので

は今、このString afValue = AF.getText().trim();NullPointerExceptionを生成することはありませんと仮定して、その後、afValue.equals(null)true"" != null

になることはありませんそれは非常に長い時間がかかるのです

Aより論理的なアプローチは、そうでない場合は、 `.trim()`呼び出しはNullPointerExceptionがスローだろう...

JButton btnSubmit = new JButton("Submit"); 
btnSubmit.addActionListener(new ActionListener() { 

    public void actionPerformed(ActionEvent e) { 
     String afValue = AF.getText().trim(); 
     String alValue = AL.getText().trim(); 
     String titleValue = titleBook.getText().trim(); 
     String dropRGValue = dropRG.getSelectedItem().toString(); 
     if (afValue.isEmpty() || alValue.isEmpty() || titleValue.isEmpty() || dropRGValue.isEmpty()) { 
      JOptionPane.showMessageDialog(null, "Can't have empty fields!"); 
     } else { 
      //SQL code 
      JOptionPane.showMessageDialog(null, "Entry Saved!"); 
     } 
    } 
}); 
関連する問題