2017-03-08 2 views
0

Je souhaite ajouter & pour supprimer un opérateur avec un bouton. Donc, au début, '-' est supposé ne pas être disponible. Lorsque je clique sur '-', il devrait être ajouté dans la première ligne du champ de texte. S'il est déjà présent et que l'on clique dessus, il devrait être supprimé. Comment puis-je faire cela?Ajouter et supprimer un caractère dans le champ de texte avec un bouton

Ce code j'ai écrit jusqu'à présent:

private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {          
    jTextField.setText("-" + jTextField.getText()); 
} 
+0

Faire le « bouton » un ' JCheckBox'. Quand il est coché, récupérez le texte, vérifiez qu'il ne commence pas déjà par '-' et sinon, préfixez le texte avec un. Quand elle n'est pas cochée, faites la même vérification (mais en face, et si c'est le cas, récupérez la sous-chaîne du premier caractère et placez-la comme texte.) Regardez attentivement les méthodes 'String' pour plus de détails. parce que l'utilisateur peut toujours taper un signe '-' manuellement, ce qui semble vraiment plus simple! –

Répondre

0

essayez ceci:

private void jButtonActionPerformed(java.awt.event.ActionEvent evt) { 
     String text = jTextField.getText(); 
     if (text != null && text.indexOf("-") == 0) { 
      text = "+" + text.substring(1, text.length()); 
     } 
     else if (text != null && text.indexOf("+") == 0) { 
      text = "-" + text.substring(1, text.length()); 
     } 
     else { 
      text = "-"+(text != null ? text : ""); 
     } 
     jTextField.setText(text); 
    } 
+0

je l'utilise, merci :) –

0

S'il n'y a pas de texte, ce texte est à ajouter?

Essayez ceci:

private void jButtonActionPerformed(java.awt.event.ActionEvent evt) 
    { 
      if(jTextField.getText().length() != 0) 
      { 
       jTextField.setText(""); 
      } 
      else 
      { 
       //Set the text from wherever you are receiving it 
      } 
    } 

Lorsque votre champ est vide, vous pouvez définir le texte à tout ce que vous voulez, et si ce n'est pas, il sera fait vide.

+0

pas tout à fait correct, il veut un bouton, qui va ajouter ou supprimer le' -' selon que ce soit dans le champ de texte ou non. moins c'est ce que je comprends – XtremeBaumer

+0

il ya déjà un nombre entré avec un autre bouton, pas vide, c'est pour l'application de la calculatrice –

+0

@XtremeBaumer Wow, je pensais que le contenu du champ doit être ajouté ou supprimé –

0

n'a pas testé, mais il devrait fonctionner:

b.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (textField.getText().charAt(0) == '-') { 
      String toSet = textField.getText(); 
      toSet = toSet.substring(0, 0).replace("-", ""); 
      textField.setText(toSet); 
     } else { 
      textField.setText("-" + textField.getText()); 
     } 

    } 

}); 

ne hésitez pas à demander si vous avez des questions

0

je voudrais ajouter une nouvelle ActionListener sur le bouton et définissez son code avec une instruction @Override. Cela devrait faire l'affaire:

button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

       String fieldText = textField.getText(); 

       if (fieldText.substring(0,1).equals("-")){ 
        textField.setText(fieldText.substring(1, fieldText.length())); 
       } else { 
        textField.setText("-" + fieldText); 
       } 
      } 
     }); 
0

Un autre point de vue sur l'idée qui est un peu plus efficace, que vous créez pas tant de String temporaires objets

btn.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     Document doc = field.getDocument(); 
     try { 
      if (doc.getLength() > 0 && doc.getText(0, 1).equals("-")) { 
       doc.remove(0, 1); 
      } else { 
       doc.insertString(0, "-", null);    
      } 
     } catch (BadLocationException ex) { 
      ex.printStackTrace(); 
     } 
    } 
});