Auteur |
Message |
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mer 25 Mai 2005 - 04:08 |
|
je sais le sujet n'est pas très clair alors je vais essayé d'expliqué au mieux mon problème
j'essaye de creer un programme qui puisse chercher, supprimer, mettre à jour et inserer des elements dans une base de données.
j'ai trouvé un code interessant, qui en cliquant sur le bouton "supprimer" par exemple, change le type de la fenetre.
c'est à dire sur la fenetre de départ, il y a 5 boutons (chercher, supprimer, mette à jour et inserer)
celon mon code (qui marche à l'origine qu'avec un seul bouton) lorsque je clique sur ce bouton, l'interface change mais je ne sais pas comment faire pour avoir plusieurs interfaces differentes en fonction du bouton.
voici mon code :
Code: |
classe "AppliWindowEvent" ==> 1ere interface du programme
package com.changement.test;
import java.awt.*;
import java.awt.event.*;
import com.changement.outil.*;
/**
* <p>Titre : changement de couleur, de texte, de libelle, de titre</p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2005</p>
* <p>Société : </p>
* @author
* @version 1.0
*/
class AppliWindowEvent
{
public static void main(String[]arg)
{
Frame fen = new Frame ("Bonjour Techniclim");
fen.setBounds(200,200,350,220);
fen.setLayout(new FlowLayout());
Button chercher = new Button("CHERCHER");
Button supprimer = new Button("SUPPRIMER");
Button maj = new Button("METTRE A JOUR");
Button inserer = new Button("INSERER");
Button quitter = new Button("QUITTER L'APPLICATION");
Label texte = new Label("Cette ligne est du texte");
chercher.addActionListener(new ListenerGeneral(chercher, texte, fen));
supprimer.addActionListener(new ListenerGeneral(supprimer, texte, fen));
maj.addActionListener(new ListenerGeneral(maj, texte, fen));
inserer.addActionListener(new ListenerGeneral(inserer, texte, fen));
quitter.addActionListener(new ListenerQuitter());
fen.add(texte);
fen.add(chercher);
fen.add(supprimer);
fen.add(maj);
fen.add(inserer);
fen.add(quitter);
fen.setVisible(true);
}
}
classe "ListenerGeneral" ==> 2eme interface
package com.changement.outil;
import java.awt.*;
import java.awt.event.*;
/**
* <p>Titre : changement de couleur, de texte, de libelle, de titre</p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2005</p>
* <p>Société : </p>
* @author
* @version 1.0
*/
public class ListenerGeneral implements ActionListener
{
Label etiq;
Frame win;
Button bout;
// constructeur :
public ListenerGeneral(Button bouton, Label etiquette, Frame window)
{
this.etiq = etiquette;
this.win = window;
this.bout = bouton;
}
public void actionPerformed(ActionEvent e)
// Actions sur l'etiquette, la fenetre, le boutton lui même :
{
etiq.setText("changement");
win.setTitle("Nouveau titre");
win.setBackground(Color.yellow);
bout.setLabel("Merci");
}
}
classe "ListenerQuitter" ==> ferme l'application
package com.changement.outil;
import java.awt.*;
import java.awt.event.*;
/**
* <p>Titre : changement de couleur, de texte, de libelle, de titre</p>
* <p>Description : </p>
* <p>Copyright : Copyright (c) 2005</p>
* <p>Société : </p>
* @author
* @version 1.0
*/
public class ListenerQuitter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
} |
MERCI BEAUCOUP POUR VOTRE AIDE
à bientôt |
|
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Mer 25 Mai 2005 - 12:47 |
|
Alors d'apres ce que j'ai compris il faudrai que les composants de la fenetre change quand tu appuie sur un bouton ??
Si c'est ca y'a deux solutions :
- Soit ta méthode vas modifier le panel de ta fenetre (fonction de suppression et d'ajout d'evenements) mais bon le problème c'est qu'a chaque fois que t'appuie sur le bouton il faudra redessiner completement ta fenetre.
- Soit tu fait un Container pour chacune des interface que tu desire et tu n'affiche que celui que tu veux. La méthode c'est JPanel.setContentPane(Container). Les avantages de cette méthode c'est que tu peux mettre ton container la ou tu veux, tu peux decider par exemple de garder une partie static qu'elle que soit l'affichage.
Bon apres j'espere avoir bien compris ton problème... |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Mer 25 Mai 2005 - 12:58 |
|
Ah oui aussi, un petit conseil, t'es pas obligé de faire une classe public différente pour chacune de tes classes, par exemple pour tes ActionListener, ca t'evitera de faire plein de fichiers.
Ce qu'il faut faire dans ce cas la c'est de créer tes classes en private à l'intérieur d'une classe public. Le premier avantage c'est que les méthodes de ta classe private auront accès aux attributs de ta classe public de base, car en fait ta classe privée fait aussi partie des attributs de la classe public... Dsl c'est peut etre pas clair
En gros ca t'evitera de devoir definir des constructeurs pour pouvoir récupérer des valeurs à utiliser dans les evenements !!!
Y'a un autre moyen de faire, qui est utilisé surtout pour les evenements c'est d'instancier et de declarer ta classe directement dans le code. Jte fait un exemple parsk'a expliker c'est pas super simple :
Code: |
JLabel toto = new JLabel("Toto");
toto.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Tu met ton code pour l'action ici
}
}) ;
Et voila, t'economise plein de ligne, et c'est beaucoup plus rapide a l'execution !!! Et bien sur tu peux aussi utiliser les attributs private de la classe pub !!!
Bon par contre tu peux pas facilement récupérer l'instance de ta classe ensuite, mais dans le cas d'un evenement, ton instance elle sert qu'une seul fois :) |
|
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Jeu 26 Mai 2005 - 00:24 |
|
donc (pour ta methode) si je clique sur , par exemple, inserer, ma fenetre changera avec ce que j'ai defini comme par exple un TextField ou TextArea qui permettera en cliquant sur un boutton, d'inserer?
je sais pas si tu me comprends
je veux juste que ma fenetre change en fonction du bouton sur lequel j'ai cliqué (supprimer, inserer...)
merci pour ton aide |
|
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Jeu 26 Mai 2005 - 09:23 |
|
Ben dans tout les cas ma méthode marche pour changer ta fenetre, apres y'a peut-etre un moyen plus simple pour le faire.
Je dois t'avouer par contre que j'ai toujours pas très bien compris ce que tu voulais exactement faire.
Qu'est ce qui doit changer sur ta fenetre ?
Qu'est ce que tu insere ? du texte, des composants ? |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Jeu 26 Mai 2005 - 17:53 |
|
bon ok je reexplique
en faite j'ai ma 1ere fentre où il y a tous les boutons(supprimer, mettre à jour....)
mais je pense que le plus pratique serait, que lorsque je clik sur un bouton, une autre fenetre s'ouvre(propre au bouton qui a été cliké precedement) avec plus ou moins de composants celon le bouton cliké
car mon projet serait de supprimer(par exemple)... des elements d'une base de données Mysql
en faite dans l'idée precedente, je voulais, lorsque je clik sur un bouton, que cette même fenetre affiche les composants du bouton cliké
j'espere que mon explication t'aidera à mieux comprendre ce que je veux faire |
|
|
|
|
|