2016-11-19 2 views
-1

ok donc ce que Ive a obtenuEst-il possible de définir le texte d'un JTextField Swing

jTextField1.setBounds(136, 24, 17, 17); 
jTextField1.setEditable(false); 
jTextField1.setText("x"); 
jTextField1.setBorder(javax.swing.BorderFactory.createEmptyBorder()); 
jTextField1.setHorizontalAlignment(SwingConstants.CENTER); 
jTextField1.setFont(new Font("Dialog", Font.PLAIN, 16)); 
jTextField1.setBackground(Color.WHITE); 
jTextField1.setOpaque(false); 
cp.add(jTextField1); 

[...]

public void actionPerformed(ActionEvent e) { 
if (e.getActionCommand() == "+") { 
plus = true; // [...] 

Si e.getActionCommand() = + i want pour changer le texte de jTextField. Est-ce possible? Quelles alternatives sont là? thx à l'avance

+0

Oui c'est possible, il suffit d'appeler 'setText (...)' sur votre JTextField, et c'est tout. Mais ne comparez pas non plus les chaînes en utilisant '==' ou '! ='. Utilisez la méthode 'equals (...)' ou la méthode 'equalsIgnoreCase (...)' à la place. Comprenez que '==' vérifie si les deux * références d'objet * sont les mêmes ce qui ne vous intéresse pas. Les méthodes d'un autre côté vérifient si les deux Strings ont les mêmes caractères dans le même ordre, et c'est ce que questions ici. –

+1

S'il vous plaît faire des titres plus .. utile. Le code lui-même contient la réponse, car il utilise 'setText' - par conséquent, de manière triviale et redondante par rapport au titre, le texte * peut * être modifié. – user2864740

+0

1) 'jTextField1.setBounds (136, 24, 17, 17);' Les interfaces graphiques Java doivent fonctionner sur différents systèmes d'exploitation, taille d'écran, résolution d'écran, etc. en utilisant différents PLAF dans différents environnements locaux. En tant que tels, ils ne sont pas propices à la mise en page pixel parfait. Utilisez plutôt des gestionnaires de disposition, ou [des combinaisons de ceux-ci] (http://stackoverflow.com/a/5630271/418556) avec un remplissage de mise en page et des bordures pour [espace blanc] (http://stackoverflow.com/a/17874718/ 418556). 2) Voir aussi cet exemple de calculatrice (http://stackoverflow.com/a/7441804/418556). Il utilise 'ScriptEngine' pour évaluer l'expression dans le champ de texte. –

Répondre

-1

EDIT: Eh bien, vous avez déjà utilisé la méthode setText() de JTextField. Pour pouvoir accéder à JTextField à partir de la méthode ActionPerformed() de l'ActionListener, le JTextField est rendu global.

Le ActionLister et son code pourrait ressembler à ceci:

package jTextField; 

import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class SetTextOfJTextField extends JFrame implements ActionListener{ 

    boolean plus = false; 
    JPanel panel = new JPanel(); 
    JTextField jTextField1; 

    public static void main(String[] args){ 
     new SetTextOfJTextField(); 
    } 

    public SetTextOfJTextField(){ 

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


    jTextField1 = new JTextField(10); 

    jTextField1.setEditable(false); 
    jTextField1.setText("x"); 
    jTextField1.setBorder(javax.swing.BorderFactory.createEmptyBorder()); 

    jTextField1.setBackground(Color.WHITE); 

    jTextField1.addActionListener(this); 
    jTextField1.setEditable(true); // this is necessary so the text can be changed by the user! 

    JButton button = new JButton("OK"); 
    button.addActionListener(this); 


    /* configure JFrame/Jpanel*/ 
    panel.add(jTextField1); 
    panel.add(button); 
    this.add(panel); 
    this.pack(); 
    this.setSize(200,200); 
    this.setVisible(true); 
    } 


    public void actionPerformed(ActionEvent e) { 
     System.out.println("ouch! dont click me!"); 
     if (jTextField1.getText().equals("+")) { 
      plus = true; 
      System.out.println("received plus!"); 
      // change text of jTextField1 
      jTextField1.setText("hi i am new text!"); 
     } 
     else{ 
      jTextField1.setText(""); 
     } 
    } 
    } 

Maintenant, exécutez le code. Si vous entrez un signe + dans le champ de texte et appuyez sur OK, le texte change. Appuyez sur le bouton OK une fois de plus et le texte sera réinitialisé. Bonne codification!

+0

La comparaison de chaînes doit être effectuée avec la méthode String.equals() –

+0

@mariusisgone a ajouté un exemple de code de travail qui modifie le texte de JTextField si un bouton est cliqué. –