Problême Actionperformed() java !!?
mehdimskn
Messages postés
5
Statut
Membre
-
mehdimskn Messages postés 5 Statut Membre -
mehdimskn Messages postés 5 Statut Membre -
Bonjour à tous ,
J'essaye de créer une petite application en java, l'idée est qu'on à une fenetre, avec une zone de texte (textarea), et un bouton enregistrer. Et donc quand on clique sur le bouton le texte s'enregistre dans un fichier "fichier.txt".
Sauf que j'ai un problème avec les actionListner , et actionperformed, d'ou le titre :).
je n'ai pas pu passer en argument ma zone de texte à la méthode actionperformed.
j'ai finalement trouvé un moyen d'avoir un code qui compile et qui s'exécute sauf qu'il ne fait pas ce qui est attendu. je vous met mon code j'espère que vous pourrez m'aider.
Je vous remercie par avance pour toute réponse.
Voici mon code :
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
public class Tp extends JFrame implements ActionListener {
JPanel pan = new JPanel();
JButton but = new JButton("SAUVEGARDER");
public Tp(){
this.setTitle("TP NOTE");
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setContentPane(pan);
this.setVisible(true);
//On définit le layout à utiliser sur le contentPane
pan.setLayout(new BorderLayout());
//On ajoute le bouton au contentPane de la JFrame
pan.add(but, BorderLayout.SOUTH);
//ajoute un listener : ici le listener est cette classe
but.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
JTextArea jta = new JTextArea("TEXTE");
pan.add(jta , BorderLayout.CENTER);
jta.setEditable(true);
jta.setForeground(Color.BLUE);
try{
//ouverture du fichier
File f = new File("fichier.txt");
if (!f.exists()) {
try {
f.createNewFile();
} catch (IOException ex) {
System.err.println("Erreur de création du fichier");
}
}
FileOutputStream fos = new FileOutputStream(f, true);
PrintWriter pw = new PrintWriter(fos);
pw.println(jta.getText());
pw.close();
}catch(IOException ex)
{
}
}
public static void main(String[] args){
Tp fen = new Tp();
}
}
J'essaye de créer une petite application en java, l'idée est qu'on à une fenetre, avec une zone de texte (textarea), et un bouton enregistrer. Et donc quand on clique sur le bouton le texte s'enregistre dans un fichier "fichier.txt".
Sauf que j'ai un problème avec les actionListner , et actionperformed, d'ou le titre :).
je n'ai pas pu passer en argument ma zone de texte à la méthode actionperformed.
j'ai finalement trouvé un moyen d'avoir un code qui compile et qui s'exécute sauf qu'il ne fait pas ce qui est attendu. je vous met mon code j'espère que vous pourrez m'aider.
Je vous remercie par avance pour toute réponse.
Voici mon code :
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
public class Tp extends JFrame implements ActionListener {
JPanel pan = new JPanel();
JButton but = new JButton("SAUVEGARDER");
public Tp(){
this.setTitle("TP NOTE");
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setContentPane(pan);
this.setVisible(true);
//On définit le layout à utiliser sur le contentPane
pan.setLayout(new BorderLayout());
//On ajoute le bouton au contentPane de la JFrame
pan.add(but, BorderLayout.SOUTH);
//ajoute un listener : ici le listener est cette classe
but.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
JTextArea jta = new JTextArea("TEXTE");
pan.add(jta , BorderLayout.CENTER);
jta.setEditable(true);
jta.setForeground(Color.BLUE);
try{
//ouverture du fichier
File f = new File("fichier.txt");
if (!f.exists()) {
try {
f.createNewFile();
} catch (IOException ex) {
System.err.println("Erreur de création du fichier");
}
}
FileOutputStream fos = new FileOutputStream(f, true);
PrintWriter pw = new PrintWriter(fos);
pw.println(jta.getText());
pw.close();
}catch(IOException ex)
{
}
}
public static void main(String[] args){
Tp fen = new Tp();
}
}
3 réponses
-
Salut,
Un petit exemple:
import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; public class FenetreBoutonsListener extends JFrame implements ActionListener{ private JButton bouton; private JButton bouton2; public FenetreBoutonsListener(){ super(); build();//On initialise notre fenêtre } private void build(){ setTitle("Fenêtre qui affiche des boutons"); //On donne un titre à l'application setSize(320,240); //On donne une taille à notre fenêtre setLocationRelativeTo(null); //On centre la fenêtre sur l'écran setResizable(true); //On permet le redimensionnement setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setContentPane(buildContentPane()); } private JPanel buildContentPane(){ JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); bouton = new JButton("Cliquez ici !"); bouton.addActionListener(this); panel.add(bouton); bouton2 = new JButton("Ou là !"); bouton2.addActionListener(this); panel.add(bouton2); return panel; } public static void main(String[] args) { //On crée une nouvelle instance de notre FenetreBoutons FenetreBoutonsListener fenetre = new FenetreBoutonsListener(); fenetre.setVisible(true);//On la rend visible } ///////////////////////////////////////////////////////////////////////////// public void actionPerformed(ActionEvent e) { // <<<< c'est ici Object source = e.getSource(); if(source == bouton){ System.out.println("Vous avez cliqué ici."); } else if(source == bouton2){ System.out.println("Vous avez cliqué là."); } } } /////////////////////////////////////////////////////////////////////////////
Cordialement,
Dan -
Merci pour ta réponse Dan,
Ton exemple est assez simple, ce n'est pas ce que je demande. Je veut faire une fenêtre avec un bouton et une zone de texte, et quand on clique sur le bouton on sauvegarde le texte dans un fichier txt.
Si tu peux m'aider un peu à voir ce qui ne va pas dans mon code ? :) -
Finalement j'ai réussi, grâce à Dan bien sur ton code est bien organisé donc on voit tout de suite ce qui ne va pas j'ai pris ton code et je l'ai adapté a ce que je voulais.
Merci je vais coder plus proprement maintenant :)
RESOLU