Question

J'ai un documentListener pour rechercher des changements dans le jtexfield:

public class MyDocumentListener implements DocumentListener {

    static String text;

    public void insertUpdate(DocumentEvent e) {
        updateLog(e);
    }
    public void removeUpdate(DocumentEvent e) {
        updateLog(e);
    }
    public void changedUpdate(DocumentEvent e) {
        //Plain text components do not fire these events
    }

    public static String passText() {
        System.out.println("string that will be passed is: "+text);
        return text;
    }

    public void updateLog(DocumentEvent e) {

        Document doc = (Document)e.getDocument();
        int length = e.getLength();

        try {
            text = doc.getText(0, length);
        } catch (BadLocationException e1) {
            e1.printStackTrace();
        }
        System.out.println("you typed "+text);  
    }
}

Et puis, dans l'autre classe:

String info = MyDocumentListener.passText();

Le problème est que je n'obtiens qu'un seul personnage, au lieu de toute la chaîne. Aucune suggestion?

Était-ce utile?

La solution

Vous obtenez la longueur du monnaie au lieu de la longueur du document:

int length = e.getLength(); // probably 1

devrait être

int length = doc.getLength();

Autres conseils

La réponse fournie par Paislee est en effet correcte. Vous souhaitez ajouter une autre façon de faire la même chose. Vous pouvez utiliser des liaisons, ce qui ajoute le concept de propriétaires de valeurs, de variables qui stockeront et refléteront iMediatty toute modification de propriété de vos composants graphiques. Il peut fournir un moyen très efficace de mettre en œuvre le modèle de conception MVC avec le swing, car la communication entre le modèle-contrôleur-View est beaucoup plus affective et découplée.

Jgoodies a une excellente implémentation open source pour cela. Si vous pouvez passer un jour et que vous souhaitez améliorer votre conception, n'hésitez pas à jeter un œil.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top