2017-10-17 10 views
1

Je suis le plus dur de trouver comment coder combien de mots il y a dans l'entrée pour le JTextField, j'ai mis un bouton d'entrée clair, et une fois Je vais trouver comment savoir combien de mots il y a, je serai capable de clarifier cela aussi. Merci les gars, voici mon code!Trouver le nombre de mots dans l'entrée de texte de JTextField

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class CopyTextPanel extends JPanel 
{ 
private JTextField input; 
private JLabel output, inlabel, outlabel; 
private JButton compute, clear; 
private JPanel panel; 

public CopyTextPanel() 
{ 
    inlabel = new JLabel("Input Text: "); 
    outlabel = new JLabel("Text Statistics Results: "); 
    input = new JTextField (" ", 25); 
    output = new JLabel(); 
    compute = new JButton("Compute Statistics"); 
    compute.addActionListener (new ButtonListener()); 
    clear = new JButton("Clear Text"); 
    clear.addActionListener (new ButtonListener()); 
    panel = new JPanel(); 

    output.setPreferredSize (new Dimension(550, 30)); 
    panel.setPreferredSize (new Dimension(620, 100)); 
    panel.setBackground(Color.gray); 
    panel.add(inlabel); 
    panel.add(input); 
    //panel.add(outlabel); 
    //panel.add(output); 
    panel.add(compute); 
    panel.add(clear); 
    panel.add(outlabel); 
    panel.add(output); 

    setPreferredSize (new Dimension(700, 150)); 
    setBackground(Color.cyan); 
    add(panel); 
} 

private class ButtonListener implements ActionListener 
{ 
    public void actionPerformed (ActionEvent event) 
    { 
     if (event.getSource()==compute) 
     { 
      { 
       output.setText (input.getText());      
      } 
     } 
     else 
      input.setText(""); 
    } 
} 
+1

votre problème de base peut être mieux résumer comme, "comment compter le nombre de mots dans une chaîne", je suggère de faire quelques recherches sur ce sujet en premier, car le reste du code a peu à voir avec la résolution de ce problème – MadProgrammer

+0

Vous devriez regarder dans les expressions régulières. Ils sont très utiles pour faire ce que vous essayez de faire. – luckydog32

Répondre

4

Pour petit morceau de texte comme celui-là dans un inputText vous pouvez utiliser split pour générer un tableau de chaînes avec la chaîne casse en mots et ainsi de lire la longueur du tableau:

String test = "um dois  tres quatro  cinco "; 
String [] splitted = test.trim().split("\\p{javaSpaceChar}{1,}"); 
System.out.println(splitted.length); 

// sortie 5

Alors, pour votre entrée:

String inputText = input.getText(); 
String [] splitted = inputText.trim().split("\\p{javaSpaceChar}{1,}"); 
int numberOfWords = splitted.length; 
+0

Incroyable! Je vous remercie! Je l'ai eu pour travailler et maintenant je me demande si je le comprends correctement. Je comprends que la variable inputtext définit l'intput.getText(); à une chaîne. Ce que je ne comprends pas pourquoi je reçois une erreur si je mets simplement Stringp [] splitted = inputText.split ("\\ s"); pour les espaces et pourquoi j'ai besoin d'ajouter tous les autres appels de méthode. Merci encoreA – GonePhisin

+0

Je vous remercie! Pourriez-vous m'aider à mieux comprendre le tableau String au lieu de taper simplement dans Stringp [] splitted = inputText.split ("\\ s"); – GonePhisin

+0

Vous êtes les bienvenus. Eh bien, les deux approches sont similaires d'une manière ou d'une autre. La solution que l'on utilise est une sorte de plus robuste puisqu'elle couvre toutes les situations d'espaces vides. S'il vous plaît se référer à cette réponse à une réponse plus précise: https://stackoverflow.com/a/4731164/3055724 – Doleron