2017-10-05 1 views
0

Ich habe ein Programm, wo die Benutzer Werte in JTextFields eingeben und dann eine Schaltfläche drücken, die ihre Werte in eine SQL-Datenbank sendet.JComboBox und JTextFields funktionieren nicht mit 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); 

Ich habe drei JTextFields für die Werte und eine editierbare JComboBox für die eingefügten Werte. Ich hatte den oben genannten Code in einem try/catch-Block, und es würde keine Ausnahme auslösen, und der obige Code funktionierte für mich in der Vergangenheit gut (aber aufgrund unvorhergesehener Umstände musste ich das Programm komplett neu erstellen von Grund auf), und jetzt ist es nicht, obwohl der Code der gleiche ist. Das Ergebnis des Codes endet immer mit "Entry Saved"! sogar mit leeren Feldern (und einer leeren JComboBox, da sie editierbar ist).

Auch erwähnenswert, wenn die JComboBox nicht editierbar war und die dropRgValue.equals() nicht mehr da war, der Code funktionierte immer noch nicht.

Ich bin ein Amateur-Programmierer und ich habe etwas wichtiges verpasst, aber das scheint etwas zu einfach zu sein, um nicht zu trainieren.

+2

Die String-Werte können nicht null sein, da sonst der '.trim()' Anruf eine Nullpointer werfen würde. Eine leere Zeichenfolge "" "unterscheidet sich von einer Zeichenfolge, die" null "ist. Beachten Sie auch, dass der obige Code nie funktioniert hätte und die else-Anweisung immer nur ausgeführt oder mit einer NPE beendet wurde. Du musst es also geändert haben, als du es neu erstellt hast. –

+0

Ich glaube, Sie dürfen keinen Nullwert haben, aber leer. also schau auch leer – soorapadman

Antwort

3

Zuerst Sie zuweisen, was immer Werte in den Textfeldern zu dem Zeitpunkt, wenn die ActionListener erstellt wird, die Sie nie die Werte an dem Punkt in der Zeit tatsächlich die actionPerformed Methode aufgerufen wird, die mehr Sinn

machen würde Jetzt

, unter der Annahme, dass diese String afValue = AF.getText().trim(); nie ein NullPointerException erzeugt, dann wird afValue.equals(null) nie true"" != null

ist Es ist eine sehr lange Zeit sein, da JTextField#getTextnull

zurückkehren konnte

Ein logischer Ansatz wäre etwas mehr wie zu tun ...

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!"); 
     } 
    } 
}); 
Verwandte Themen