c'est ce que j'ai fais mais rioen ne se passe... le formulaire ne s'affiche pas !![]()
Et il est censé s'afficher ou ton formulaire ?
Dans une autre fenetre, dans la fenetre principale:
dans une autre fenêtre
J'ai une JFrame que tu connais![]()
MaFrame.java
un JmenuBar que tu connais aussi
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 import javax.swing.*; //elements decoratifs import java.awt.*; //elements decoratifs public class MaFrame extends JFrame { public MaFrame() { setTitle("Mon premier prog"); setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setBackground(new java.awt.Color(255,255,255)); } public static void main(String[] args){ MaFrame ma = new MaFrame(); MenuFenetre mf = new MenuFenetre(); ma.setJMenuBar(mf); Contenu con = new Contenu(); ma.getContentPane().setLayout(new BorderLayout()); ma.getContentPane().add(con,BorderLayout.CENTER); //Centrer la JFrame à l'écran Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); ma.setLocation(dim.width/2 - ma.getWidth()/2, dim.height/2 - ma.getHeight()/2 ); ma.setVisible(true); } }
Menufenetre.java
et une class Action.java
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 import javax.swing.*; public class MenuFenetre extends JMenuBar { private JMenuItem menuQuitter, menuEnregistrer, menuNouveau, menuApropos, menuCreerBaseAnnee,menuLire ,menuModifier; public MenuFenetre() { JMenu menuFichier = new JMenu("Fichier"); //Création du menu "Fichier" n1 //On y inclut des sous menu n2 menuNouveau = new JMenuItem("Nouveau"); menuLire = new JMenuItem("Lire"); menuModifier = new JMenuItem("Modifier"); menuEnregistrer = new JMenuItem("Enregistrer"); menuQuitter = new JMenuItem("Quitter"); //On créer un sous menu "Année" n3 dans le menu "Nouveau" n2 JMenu menuNouveau = new JMenu("Nouveau"); menuCreerBaseAnnee = new JMenuItem("Année"); menuFichier.add(menuNouveau); menuFichier.add(menuLire); menuFichier.add(menuModifier); menuFichier.add(menuEnregistrer); menuFichier.addSeparator(); menuFichier.add(menuQuitter); menuNouveau.add(menuCreerBaseAnnee); menuQuitter.addActionListener (new Action (Action.QUITTER)); menuCreerBaseAnnee.addActionListener(new Action(Action.CREER_BASE_ANNEE)); menuLire.addActionListener(new Action(Action.LIRE_BASE_ANNEE)); menuModifier.addActionListener(new Action(Action.MODIFIER_BASE_ANNEE)); JMenu menuAide=new JMenu("Aide"); menuApropos = new JMenuItem("A propos"); menuAide.add(menuApropos); add (menuFichier); add (menuAide); } }
cité dans le post précédent
Effectivement, je veux ouvrir une nouvelle fenetre avec les JtextField
merci
J'ai repris ta classe Formulaire de la page precedente et voila les modifs a faire (elle etend JDialog maintenat au lieu de JPanel ) :
Et du coup si tu laisse ca :
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 public class Formulaire extends JDialog implements ActionListener{ public Formulaire() { // appel du constructeur de JPanel, le Gridlayout(0,1) range les // components verticalement. Je te conseille de voir BorderLayout, // FlowLayout et Box qui sont pas mal non plus et faciles a utiliser //ICI getContentPane().setLayout(new GridLayout(0,1)); //FIN ICI JLabel nomLab = new JLabel("nom :"); JTextField tf1 = new JTextField(); String nom = new String(); nom = tf1.getText(); JLabel sexLab = new JLabel("sexe :"); JTextField tf2 = new JTextField(); String sexe = new String(); sexe = tf2.getText(); JLabel stamLab = new JLabel("stam :"); JTextField tf3 = new JTextField(); String stam = new String(); stam = tf3.getText(); JButton Valid = new JButton("Valider"); Valid.addActionListener(this); JButton ajout = new JButton("Ajouter"); ajout.addActionListener(this); //ICI getContentPane().add(nomLab); getContentPane().add(tf1); getContentPane().add(sexLab); getContentPane().add(tf2); getContentPane().add(stamLab); getContentPane().add(tf3); getContentPane().add(ajout); getContentPane().add(Valid); //FIN ICI } public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if (s.equals("Ajouter")) { liste.add(new Canari(tf1.getText(), tf2.getText(), tf3.getText()); } else if (s.equals("Valider")) { liste.ecrire(); } } }
elle devrait s'afficher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 case CREER_BASE_ANNEE : Formulaire creerYear = new Formulaire(); creerYear.setVisible(true);// Action a effectuer break;![]()
j'ai cette erreur..... je suis vraiment désolé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2java.lang.NumberFormatException: For input string: ""
le formulaire s'affiche correctement....à quelque problème graphique que je vais (enfin j'espère) résoudre seul
Par contre, il y a quelque erreurs
J'ai mosdifier la fin pour en résoudre quelques unes
J'ai modifier:
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 liste.add(new Canari(tf1.getText(), tf2.getText(), tf3.getText());
Néanmoins, il me reste cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Annee liste= new Annee(); canari unCanari = new canari(tf1.getText(), tf2.getText(), tf3.getText(), tf4.getText(), tf5.getText()); liste.addCanari(unCanari);
Code : Sélectionner tout - Visualiser dans une fenêtre à part The method getText() is undefined for the type JDialog
Change dans ta classe Formulaire ca :
private JPanel tf1, tf2, tf3, tf4, tf5;
par
private JTextField tf1, tf2, tf3, tf4, tf5;
C'est des JTextField pas des JPanel tes champ de texte![]()
cool cap'tain... plus d'erreur J'ai un problème de création du xml.... mais je ne pense pas que cç vienne du Formulaire.... je regarde et je te tiens au courant![]()
Merci beaucoup
bon .....ben je reviens plus vite que prévue.... j'ai trouvé une de mes erreurs
lorsque je cliquais sur Valider.... je faisais un System.exit(1);
![]()
Maintanant, je n'ai plus d'erreur lors de la compilation !C'est cool
![]()
Par contre, j'ai cette erreur lorsque je valide les informations
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.lang.NullPointerException
Sympa man mais sans le code complet de la classe Formulaire c'est chaud de savoir ce qu'y a la ligne 77![]()
Mais bon, a vue d'oeil ca doit venir de la :
Ton objet liste c'est quoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 liste.add(new Canari(tf1.getText(), tf2.getText(), tf3.getText()); } else if (s.equals("Valider")) { liste.ecrire();: Il existe dans ta classe
:
Parce que sinon c'est normal, s'il existe pas dans ta classe, t'as une NullPointerException![]()
Effectivement, ça correspond bien à cette ligne là !
L'objet liste existe dans la class Annee.java
Voici le code de Annee.java
Cette class est la class principale qui me permet de lire et écrire dasn un fichier.xml
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 [...]//les imports public class Annee { private List annee = new ArrayList(); public Annee() { super(); } public void addCanari(canari unCanari) { annee.add(unCanari); } public List getAnnee() { return annee; } public void setAnnee(List annee) { this.annee = annee; } public void ecrire(){ File file = new File("c:\\travail\\test.xml"); Writer writer = null; try { writer = new FileWriter(file); //getsion du mapping Mapping mapping = new Mapping(); mapping.loadMapping("C:\\travail\\fichierMapping.xml"); // c'est ton fichier de mapping //gestion du marshaller Marshaller marshaller = new Marshaller(writer); //on affecte au marshaller le mapping marshaller.setMapping(mapping); marshaller.setEncoding("ISO-8859-1"); marshaller.marshal(this); } catch (MarshalException me) { me.printStackTrace(); System.exit(0); } catch (ValidationException ve) { ve.printStackTrace(); System.exit(0); } catch (IOException ioe) { ioe.printStackTrace(); System.exit(0); } catch (org.exolab.castor.mapping.MappingException ioe) { ioe.printStackTrace(); System.exit(0); } } public static Annee lire(){ File file = new File("c:\\travail\\test.xml"); Annee liste=null; try { FileReader reader = new FileReader(file); //getsion du mapping Mapping mapping = new Mapping(); mapping.loadMapping("C:\\travail\\fichierMapping.xml"); // c'est ton fichier de mapping //gestion du marshaller Unmarshaller unmarshaller = new Unmarshaller(mapping); //on affecte au marshaller le mapping liste = (Annee)unmarshaller.unmarshal(Annee.class,reader); } catch (MarshalException e) { e.printStackTrace(); System.exit(0); } catch (FileNotFoundException e) { e.printStackTrace(); System.exit(0); } catch (ValidationException e) { e.printStackTrace(); System.exit(0); } catch (IOException e) { e.printStackTrace(); System.exit(0); } catch (MappingException e) { e.printStackTrace(); System.exit(0); } return liste; } }
J'ai aussi cette class qui permet de déteminer l'objet canari:
canari.java
Voilà... les billes
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 public class canari { private String nom; private String sexe; private int stam; private int bague; private int year; public canari() {} public canari(String nom,String sexe,int stam,int bague, int year) { setNom(nom); setSexe(sexe); setStam(stam); setBague(bague); setYear(year); } public void setNom(String nom) { this.nom=nom; } public String getNom() { return nom; } public void setSexe(String sexe) { this.sexe=sexe; } public String getSexe() { return sexe; } public void setStam(int stam) { this.stam=stam; } public int getStam() { return stam; } public void setBague(int bague) { if (bague<=0) { System.err.println("Erreur : Bague négative !"); System.exit(0); } else { this.bague=bague; } } public int getBague() { return bague; } public void setYear(int year) { this.year=year; } public int getYear() { return year; } void affiche() { System.out.println("Nom: "+nom+" - Sexe:"+sexe+" - Stam:"+stam+" - Numéro de bague :"+bague+" - Année :"+year); } }![]()
Envoyé par pingoui
![]()
Je te dis ce qu'il faut que tu fasses et je te laisse tes billes :![]()
Faut que de ta classe Formulaire t'arrive a recuperer ton objet liste qui est dans Annee.
Faut que tu trouves un moyen de te "ballader" dans ta hierarchie de classe pour retouver cette element et travailler sur celui-ci![]()
![]()
je pense avoir fait le nécéssaire avec
non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Annee liste= new Annee();![]()
Refais voir ta classe Formulaire complete pour voir ou elle en est maintenant... Parceque la je sais plus qu'elle est la bonne version.
(Ou si tu peux modifier un de tes posts pour pas trop surcharger la base)
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 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Formulaire extends JDialog implements ActionListener{ private JTextField tf1, tf2, tf3, tf4, tf5; public Formulaire() { // appel du constructeur de JPanel, le Gridlayout(0,1) range les // components verticalement. Je te conseille de voir BorderLayout, // FlowLayout et Box qui sont pas mal non plus et faciles a utiliser //ICI getContentPane().setLayout(new GridLayout(0,1)); //FIN ICI JLabel nomLab = new JLabel("nom :"); JTextField tf1 = new JTextField(); String nom = new String(); nom = tf1.getText(); JLabel sexLab = new JLabel("sexe :"); JTextField tf2 = new JTextField(); String sexe = new String(); sexe = tf2.getText(); JLabel stamLab = new JLabel("stam :"); JTextField tf3 = new JTextField(); String stam = new String(); stam = tf3.getText(); JLabel bagueLab = new JLabel("Bague :"); JTextField tf4 = new JTextField(); String bague = new String(); bague = tf4.getText(); JLabel yearLab = new JLabel("Année :"); JTextField tf5 = new JTextField(); String year = new String(); year = tf5.getText(); JButton valid = new JButton("Valider"); valid.addActionListener(this); JButton annul = new JButton("Annuler"); annul.addActionListener(this); getContentPane().add(nomLab); getContentPane().add(tf1); getContentPane().add(sexLab); getContentPane().add(tf2); getContentPane().add(stamLab); getContentPane().add(tf3); getContentPane().add(bagueLab); getContentPane().add(tf4); getContentPane().add(yearLab); getContentPane().add(tf5); getContentPane().add(valid); getContentPane().add(annul); } public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if (s.equals("Valider")) { Annee liste= new Annee(); canari unCanari = new canari(tf1.getText(), tf2.getText(), Integer.parseInt(tf3.getText()), Integer.parseInt(tf4.getText()), Integer.parseInt(tf5.getText())); liste.addCanari(unCanari); liste.ecrire(); } else if (s.equals("Annuler")) { System.exit(1); } } }![]()
La ligne 77 c'est laquelle exactement chez toi, parcequ'ici ca correspond a :
Ce qui me plait pas trop
Code : Sélectionner tout - Visualiser dans une fenêtre à part canari unCanari = new canari(tf1.getText(), tf2.getText(), Integer.parseInt(tf3.getText()), Integer.parseInt(tf4.getText()), Integer.parseInt(tf5.getText()));![]()
Bon ta qu'a mettre ca :
a la place deJTextField tf1 = new JTextField("");
et tu fais pareil pour les 4 autres textFieldJTextField tf1 = new JTextField();![]()
Partager