Je vous résume ce que je veux faire.
J'ai une première fenêtre qui s'ouvre dès l'ouverture de l'application qui affiche un JTextArea pour pouvoir écrire un texte.
À partir de cette interface, il m'est possible de naviguer dans un menu d'ouvrir une autre fenêtre de statistiques.
Ce que je veux faire, c'est que quand l'utilisateur entre son texte, que le panneau statistiques se mettre à jours automatiquement.
Je veux débuter avec le "label nombre de mots"
Voici ce que j'ai débuté.
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 import java.util.Observable; import java.util.Observer; import javax.swing.JLabel; import javax.swing.JTextArea; public class Label extends JLabel implements Observer { int nbMots; public Label(){ setText(String.valueOf(nbMots)); } public void update(Observable arg0, Object arg1) { setText(String.valueOf(((Texte)arg0).getNbMots())); } }
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 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; public class FenetreEditeur extends JFrame implements Runnable { JTextArea texteUtilisateur = new JTextArea(); JScrollPane scrollPane = new JScrollPane(); JMenuBar barreMenu = new JMenuBar(); JMenu menu = new JMenu("Révision"); JMenuItem item1 = new JMenuItem("Statistiques"); JMenuItem item2 = new JMenuItem("Grammaire et orthographe"); JMenuItem item3 = new JMenuItem("Analyse automatique"); JPanel panel = new JPanel(new BorderLayout()); Label lbNbMots = new Label(); static Texte texte = new Texte(); int nbMots = 1; public void run() { barreMenu.add(menu); menu.add(item1); menu.add(item2); menu.add(item3); texteUtilisateur = new JTextArea(5, 30); scrollPane = new JScrollPane(texteUtilisateur); panel.add(scrollPane, BorderLayout.CENTER); JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setJMenuBar(barreMenu); frame.setContentPane(panel); frame.setSize(600, 600); frame.setLocation(400, 400); frame.setVisible(true); Ecouteur action = new Ecouteur(); item1.addActionListener(action); item2.addActionListener(action); texteUtilisateur.addKeyListener(action); } private class Ecouteur implements ActionListener, KeyListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == item1) { PanneauStatistiques stats = new PanneauStatistiques(); Thread t = new Thread(stats); t.start(); } if (e.getSource() == item2) { PanneauCorrecteur cor = new PanneauCorrecteur(); Thread t = new Thread(cor); t.start(); } } public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_SPACE) { texte.setNbMots(nbMots); nbMots++; } } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } } }
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 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridLayout; import java.awt.Insets; import java.awt.LayoutManager; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.ArrayList; import java.util.Observable; import javax.swing.*; public class PanneauStatistiques extends JFrame implements Runnable { JLabel lbStatistiques = new JLabel("Statistiques"); JLabel lbPages = new JLabel("Pages"); JLabel lbMots = new JLabel("Mots"); JLabel lbCarac1 = new JLabel("Caractères (espace non compris"); JLabel lbCarac2 = new JLabel("Caractères (espace compris)"); JLabel lbParagraphe = new JLabel("Paragraphes"); JLabel lbLignes = new JLabel("Lignes"); JLabel lbNbPages = new JLabel("0"); JLabel lbNbCarac1 = new JLabel("0"); JLabel lbNbCarac2 = new JLabel("0"); JLabel lbNbParagraphe = new JLabel("0"); JLabel lbNbLignes = new JLabel("0"); JButton btnFermer = new JButton("Fermer"); JPanel panneauPrincipal = new JPanel(); JPanel panneauTexte = new JPanel(); JPanel panneauStats = new JPanel(); JPanel panneauBouton = new JPanel(); Label lbNbMots = new Label(); Texte texte = new Texte(); public PanneauStatistiques() { super("Statistiques"); setSize(400, 200); setLocation(500, 500); setVisible(true); } public void run() { panneauPrincipal = (JPanel) getContentPane(); panneauTexte.setLayout((new GridLayout(6, 1))); panneauStats.setLayout(new GridLayout(6, 1)); panneauTexte.add(lbPages); panneauStats.add(lbNbPages); panneauTexte.add(lbMots); panneauStats.add(lbNbMots); panneauTexte.add(lbCarac1); panneauStats.add(lbNbCarac1); panneauTexte.add(lbCarac2); panneauStats.add(lbNbCarac2); panneauTexte.add(lbParagraphe); panneauStats.add(lbNbParagraphe); panneauTexte.add(lbLignes); panneauStats.add(lbNbLignes); panneauBouton.add(btnFermer); panneauPrincipal.add(panneauTexte, BorderLayout.WEST); panneauPrincipal.add(panneauStats, BorderLayout.EAST); panneauPrincipal.add(panneauBouton, BorderLayout.SOUTH); Ecouteur action = new Ecouteur(); btnFermer.addActionListener(action); texte.addObserver(lbNbMots); texte.setNbMots(FenetreEditeur.texte.getNbMots()); } private class Ecouteur implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == btnFermer) { setVisible(false); } } } }Je crois que j'ai mêler un peu les choses. Je crois pas que j'ai mis les méthode key dans le bon panneau.
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 import java.util.Observable; public class Texte extends Observable { private int nbMots; public int getNbMots() { return nbMots; } public void setNbMots(int nbMots) { this.nbMots = nbMots; setChanged(); notifyObservers(); } }
Quelqu'un peu me guider, car je crois quand même avoir une bonne base.
Merci






Répondre avec citation




quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez


Partager