IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

récupérer valeur d'un listener


Sujet :

Composants Java

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut récupérer valeur d'un listener
    Bonjour,

    J'ai un projet à faire en Swing mais je débute avec cette API.

    Voila mon problème :

    j'ai une class Writer dans laquelle j'ai un jTextField et une variable string qui prend au début la valeur "article_title" (qui me permet de dire que le champ cité juste avant servira à recevoir le titre d'un article).

    Comme je voudrai ré-utiliser le même champ pour les titres des chapitres et sous chapitres, je valide tout d'abord le champ avec un bouton qui appelle mon listener.

    Ensuite, dans le listener, je passe en paramètre le champ et la variable string. Lorsque je valide le champ en l'enregistrant dans un nouvel objet, j'aimerai que le listener modifie la variable string pour remplacer la valeur "article_title" par "chapter_title" par exemple. Or cette valeur ne se modifie que dans la class du listener et je ne sais pas comment la renvoyer à ma class Writer.

    Quelqu'un peut-il m'éclairer ?

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    Voici le code que j'ai concernant la classe Writer et le listener associé :

    la class Writer tout d'abord :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
     
    package com.labosun.articlewriter.form;
     
    import java.awt.*;
    import javax.swing.*;
     
    import com.labosun.articlewriter.bo.*;
    import com.labosun.articlewriter.listeners.ValidateFieldAction;
     
    /**
     * This class is used to create, open, save (etc...) the articles
     * @author Anthony
     *
     */
    public class Writer extends JFrame{
    	/**
             * List of variables used to write the article
             */
    	public JPanel leftContent = null;
    	public JPanel rigthContent = null;
    	public Dimension windowSize;
    	public Dimension componentSize;
    	public String state = "article_title";
    	public JLabel fieldType = null;
    	public JTextField titleField = null;
    	public JTextArea contentField = null;
    	public JButton validFieldButton = null;
     
    	/**
             * This is the default constructor for the class Writer
             *
             */
    	public Writer() {
    		super();
    		initialize();
    	}
     
    	/**
             * This method is used to define initials parameters of the window
             *
             */
    	public void initialize() {
    		this.setSize(1000, 800);
    		this.windowSize = this.getSize();
    		this.setLocationRelativeTo(null);
    		this.setTitle("Sun Laboratory's Article Writer");
    		this.setContentPane(getJContentPane());
    		setLayout(null);
    		this.setVisible(true);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
     
    	/**
             * this method permit to define content's components
             * @return
             */
    	public JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jContentPane = new JPanel();
    			jContentPane.add(getFieldType());
    			componentSize = getFieldType().getPreferredSize();
    			getFieldType().setBounds(windowSize.width/2-componentSize.width/2, 90, componentSize.width, componentSize.height);
    			jContentPane.add(getTitleField());
    			componentSize = getTitleField().getPreferredSize();
    			componentSize.width = 400;
    			getTitleField().setBounds(windowSize.width/2-componentSize.width/2, 110, componentSize.width, getTitleField().getPreferredSize().height);
    			jContentPane.add(getValidFieldButton());
    			componentSize = getValidFieldButton().getPreferredSize();
    			getValidFieldButton().setBounds(windowSize.width/2-componentSize.width/2, 135, componentSize.width, getTitleField().getPreferredSize().height);
    		}
    		return jContentPane;
    	}
     
    	/**
             * This method is the getter of the fieldType label
             * @return
             */
    	public JLabel getFieldType() {
    		if (fieldType == null) {
    			fieldType = new JLabel();
    			if (state == "article_title") {
    				fieldType.setText("Enter the article's title : ");
    			}
    		}
    		return fieldType;
    	}
     
    	/**
             * This is the getter of the JTextField
             * @return
             */
    	public JTextField getTitleField() {
    		if (titleField == null) {
    			titleField = new JTextField();
    		}
    		return titleField;
    	}
     
    	/**
             * This is the getter for the validating button
             * @return
             */
    	public JButton getValidFieldButton() {
    		if (validFieldButton == null) {
    			validFieldButton = new JButton();
    			validFieldButton.setText("Validate informations");
    			validFieldButton.addActionListener(new ValidateFieldAction(this));
    		}
    		return validFieldButton;
    	}
     
    	public static void main(String[] args) {
    		new Index();
    	}
    }

    Et le listener associé au bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    package com.labosun.articlewriter.listeners;
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import com.labosun.articlewriter.bo.*;
     
    import javax.swing.JTextField;
     
    import com.labosun.articlewriter.form.Writer;
     
     
    public class ValidateFieldAction implements ActionListener{
     
    	public Article article;
    	private Writer writer;
    	private String article_title = "Enter the title of your article";
    	private String chapter_title = "X - Enter the title of the chapter";
    	private String subChapter_title = "X.X - Enter the title of the sub-chapter";
    	private String subSubChapter_title = "X.X.XEnter the title of the sub-sub-chapter";
     
    	public ValidateFieldAction(Writer wtr) {
    		// TODO Auto-generated constructor stub
    		this.writer = wtr;
    	}
     
    	public void actionPerformed(ActionEvent arg0) {
    		// TODO Auto-generated method stub
    		if ((writer.state == "article_title") && (writer.titleField.getText() == article_title)) {
    			article = new Article();
    			article.setTitle(writer.getTitleField().getText());
    			writer.state = "chapter_title";
     
    		}
    	}
     
    }
    Sa vous aidera surement !

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Salut,

    Essaye de changer ton actionPerformed comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	public void actionPerformed(ActionEvent arg0) {
    		// TODO Auto-generated method stub
    		if ((writer.state.equals("article_title")) /*&& (writer.titleField.getText().equals("article_title"))*/) {
    			article = new Article();
    			article.setTitle(writer.getTitleField().getText());
     
    			writer.state = "chapter_title";
     
    			writer.fieldType.setText(writer.state);
     
    		}
    	}

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    Rien ne s'affiche dans le champs...

    Pourtant, si j'ai bien compris, le passage d'un objet en paramètre permet une référence directe vers l'objet d'origine donc sa devrait être bon ...

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Salut,

    Que voudrais-tu qu'il affiche exactement dans le champ?

    Une valeur par défaut?

    A++

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    non, en fait, je voudrais me servir du string pour savoir si l'utilisateur saisit le titre d'un article, d'un chapitre, d'un sous-chapitre ... afin de les enregistrer comme il se doit, et d'afficher le texte correspondant dans le label juste au dessus.

    C'est pour ca que je voudrai modifier la valeur du string dans le listener (qui est l'endroit ou j'enregistre les infos), ce qui me permet de réutiliser le meme champ de texte

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Salut,

    Normalement si tu fais ce que j'ai fait pour ton JTextField, la même chose pour ton JtextArea ça marchera

    A++

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    En effet ca marche bien j'avais oublié de remplacer writer.state == "valeur" par writer.state.equals("valeur")

    Merci pour l'aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POI]Récupérer valeur cellule suivant format
    Par leminipouce dans le forum Documents
    Réponses: 1
    Dernier message: 27/10/2005, 08h52
  2. Récupérer valeur contrôle en dynamique via requête
    Par nicburger dans le forum Access
    Réponses: 10
    Dernier message: 15/09/2005, 15h41
  3. [ActionScript] Récupérer valeur balise <param />
    Par JohnBlatt dans le forum Flash
    Réponses: 1
    Dernier message: 18/07/2005, 14h50
  4. CR9 - Récupérer valeurs multiples d'un champ paramètre
    Par CR9-Deb dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2005, 16h08
  5. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo