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

AWT/Swing Java Discussion :

Utiliser une classe extérieure


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 17
    Par défaut Utiliser une classe extérieure
    Bonjour,

    Je suis novice, donc il se peut que je ne sois pas très précis, ne m'en tenez pas trop rigueur svp ^^
    Je dois, pour un projet, réaliser une interface graphique. Dans ce projet, je dois, entre autres, assembler différents messages en un seul.
    Cela est déjà fait, et marche. Mais maintenant mon interface graphique doit afficher les différents messages (qui sont stockés dans un fichier), et, par un clic sur un bouton, les assembler et afficher le message final.

    J'ai donc deux JTextField pour les messages (un pour les multiples messages ("input"), l'autre pour le message assemblé ("screen")), et un bouton.
    Mon problème réside dans l'action que fait le bouton : il doit faire appel aux méthodes de la classe Assembler, mais je ne sais pas comment y faire appel.

    Je vous mets mon code, tel que j'aimerais que ça marche (donc ça ne marche pas en l'état, mais c'est pour que vous compreniez ce que je veux faire).


    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
    public class CommutateurGUI {
    
    	JFrame fenetre;
    	JButton button1;
    	JTextArea input;
    	JTextArea screen;
    	JTextField nom;
    	Assembleur a;
    
    	public CommutateurGUI(File file_input, Assembleur a) {
    		fenetre = new JFrame("Commutateur");
    		button1 = new JButton("Assembler");
    		button1.addActionListener(new ActionButton1(this));
    		input = new JTextArea();
    		screen = new JTextArea();
                    assembleur = a;
    
    		Scanner scan;
    		try {
    			scan = new Scanner(file_input);
    			while (scan.hasNextLine()) {
    				while (scan.hasNextInt()) {
    					Integer key = scan.nextInt();
    					input.append(key.toString() + "");
    				}
    				input.append("\n");
    			}
    		} catch (FileNotFoundException e) {
    			System.out.println("File "
    					+ file_input.getAbsolutePath()
    					+ " could not be found on filesystem");
    		}
    
    		Container contenu = fenetre.getContentPane();
    
    		contenu.setLayout(new GridBagLayout());
    
    		GridBagConstraints gbc = new GridBagConstraints();
    
    		gbc.weightx = 1;
    		gbc.gridx = 0;
    		gbc.gridy = 1;
    		gbc.insets = new Insets(10, 15, 10, 15);
    		contenu.add(button1, gbc);
    
    		GridBagConstraints gbcscreen = new GridBagConstraints();
    		gbcscreen.gridy = 0;
    		gbcscreen.weighty = 1;
    		gbcscreen.gridx = 3;
    		gbcscreen.anchor = GridBagConstraints.LINE_END;
    		gbcscreen.insets = new Insets(10, 15, 10, 150);
    		contenu.add(screen, gbcscreen);
    
    		GridBagConstraints gbcinput = new GridBagConstraints();
    		gbcinput.gridy = 0;
    		gbcinput.weighty = 1;
    		gbcinput.gridx = 0;
    		gbcinput.anchor = GridBagConstraints.LINE_START;
    		gbcinput.insets = new Insets(10, 150, 10, 15);
    		contenu.add(input, gbcinput);
    
    		fenetre.pack();
    		fenetre.setVisible(true);
    	}
    
    	public static void main(File args, Assembleur a) {
    		new CommutateurGUI(args,a);
    	}
    }
    
    class ActionButton1 implements ActionListener {
    	private CommutateurGUI vue;
    
    	public ActionButton1(CommutateurGUI c) {
    		vue = c;
    	}
    
    	public void actionPerformed(ActionEvent button1) {
    		vue.screen.append("Paquet assemble : ");
    		file_input.assembler();
                    //Et la suite... c'est pas le propos ici ^^
    	}
    }
    J'ai mis en gras ce qui ne marche pas et que j'aimerais faire.

    Ce que j'aimerais faire, serait que quand le programme principal lance l'interface graphique, il la lance avec comme paramètre Assembler et file_input, comme ça j'affiche file_input dans input, et j'utilise les méthodes de Assembler sur input.

    J'espère que vous avez compris ce que je voulais faire, merci de votre aide !

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Citation Envoyé par Dosce Voir le message
    Bonjour,

    Je suis novice, donc il se peut que je ne sois pas très précis, ne m'en tenez pas trop rigueur svp ^^
    Je dois, pour un projet, réaliser une interface graphique. Dans ce projet, je dois, entre autres, assembler différents messages en un seul.
    Cela est déjà fait, et marche. Mais maintenant mon interface graphique doit afficher les différents messages (qui sont stockés dans un fichier), et, par un clic sur un bouton, les assembler et afficher le message final.

    J'ai donc deux JTextField pour les messages (un pour les multiples messages ("input"), l'autre pour le message assemblé ("screen")), et un bouton.
    Mon problème réside dans l'action que fait le bouton : il doit faire appel aux méthodes de la classe Assembler, mais je ne sais pas comment y faire appel.

    Je vous mets mon code, tel que j'aimerais que ça marche (donc ça ne marche pas en l'état, mais c'est pour que vous compreniez ce que je veux faire).


    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
    public class CommutateurGUI {
    
    	JFrame fenetre;
    	JButton button1;
    	JTextArea input;
    	JTextArea screen;
    	JTextField nom;
    	Assembleur a;
    
    	public CommutateurGUI(File file_input, Assembleur a) {
    		fenetre = new JFrame("Commutateur");
    		button1 = new JButton("Assembler");
    		button1.addActionListener(new ActionButton1(this));
    		input = new JTextArea();
    		screen = new JTextArea();
                    assembleur = a;
    
    		Scanner scan;
    		try {
    			scan = new Scanner(file_input);
    			while (scan.hasNextLine()) {
    				while (scan.hasNextInt()) {
    					Integer key = scan.nextInt();
    					input.append(key.toString() + "");
    				}
    				input.append("\n");
    			}
    		} catch (FileNotFoundException e) {
    			System.out.println("File "
    					+ file_input.getAbsolutePath()
    					+ " could not be found on filesystem");
    		}
    
    		Container contenu = fenetre.getContentPane();
    
    		contenu.setLayout(new GridBagLayout());
    
    		GridBagConstraints gbc = new GridBagConstraints();
    
    		gbc.weightx = 1;
    		gbc.gridx = 0;
    		gbc.gridy = 1;
    		gbc.insets = new Insets(10, 15, 10, 15);
    		contenu.add(button1, gbc);
    
    		GridBagConstraints gbcscreen = new GridBagConstraints();
    		gbcscreen.gridy = 0;
    		gbcscreen.weighty = 1;
    		gbcscreen.gridx = 3;
    		gbcscreen.anchor = GridBagConstraints.LINE_END;
    		gbcscreen.insets = new Insets(10, 15, 10, 150);
    		contenu.add(screen, gbcscreen);
    
    		GridBagConstraints gbcinput = new GridBagConstraints();
    		gbcinput.gridy = 0;
    		gbcinput.weighty = 1;
    		gbcinput.gridx = 0;
    		gbcinput.anchor = GridBagConstraints.LINE_START;
    		gbcinput.insets = new Insets(10, 150, 10, 15);
    		contenu.add(input, gbcinput);
    
    		fenetre.pack();
    		fenetre.setVisible(true);
    	}
    
    	public static void main(File args, Assembleur a) {
    		new CommutateurGUI(args,a);
    	}
    }
    
    class ActionButton1 implements ActionListener {
    	private CommutateurGUI vue;
    
    	public ActionButton1(CommutateurGUI c) {
    		vue = c;
    	}
    
    	public void actionPerformed(ActionEvent button1) {
    		vue.screen.append("Paquet assemble : ");
    		file_input.assembler();
                    //Et la suite... c'est pas le propos ici ^^
    	}
    }
    J'ai mis en gras ce qui ne marche pas et que j'aimerais faire.

    Ce que j'aimerais faire, serait que quand le programme principal lance l'interface graphique, il la lance avec comme paramètre Assembler et file_input, comme ça j'affiche file_input dans input, et j'utilise les méthodes de Assembler sur input.

    J'espère que vous avez compris ce que je voulais faire, merci de votre aide !
    J'ai juste jeter un coup d’œil sur ce que tu a posté au vu du thème j'aimerais te poser une question:
    Pourquoi ne pas déclarer ces classes externes dans ton code et pétiller juste leurs méthodes?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 17
    Par défaut
    Parce que ce n'est qu'un exemple, il y a bien d'autres classes et autres choses à faire dans mon interface graphique, et tout a été fait à part.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Citation Envoyé par Dosce Voir le message
    Parce que ce n'est qu'un exemple, il y a bien d'autres classes et autres choses à faire dans mon interface graphique, et tout a été fait à part.
    Ok en quoi ça t’empêche donc de les déclarer dans ta fenêtre?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 17
    Par défaut
    Parce que cette interface doit pouvoir être déclarée avec des paramètres extérieurs. Par exemple, elle doit marcher aussi bien avec un assembleur a1 qu'avec un assembleur a2

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Citation Envoyé par Dosce Voir le message
    Parce que cette interface doit pouvoir être déclarée avec des paramètres extérieurs. Par exemple, elle doit marcher aussi bien avec un assembleur a1 qu'avec un assembleur a2
    Ok désolé j'avais mal compris ton problème j'ai un soucis où est ce que tu initialise Assembleur et File?

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/05/2006, 15h26
  2. [POO] Quand utiliser une classe ?
    Par Gwipi dans le forum Langage
    Réponses: 8
    Dernier message: 05/05/2006, 14h31
  3. Réponses: 5
    Dernier message: 03/04/2006, 09h57
  4. [Applet]utiliser une classe d'un package dans une applet
    Par jeromejanson dans le forum Applets
    Réponses: 1
    Dernier message: 30/06/2005, 08h13
  5. [EJB][JONAS] EJB utilisant une classe "externe"
    Par Gregory3000 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/12/2004, 19h57

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