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

 Java Discussion :

Ouvrir un fichier dans une jtextarea en cliquant sur un bouton


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut Ouvrir un fichier dans une jtextarea en cliquant sur un bouton
    Bonjour,
    J'ai deux problèmes actuellement et je compte beaucoup sur vous pour m'aider.
    J'ai une interface avec un bouton ouvrir et enregistrer avec un jpanel contenant une jtextarea.
    je souhaite que quand je clique sur le bouton ouvrir, il me propose de choisir un fichier(ficher texte) et affiche ce fichier(son contenu) dans ma jtextarea; et quand je clique sur le bouton enregistrer, il enregistre le contenu de la jtextarea dans sur le disquedur(de préference en fichier texte).
    Merci d'avance.

    J'ai un début de code que j'ai bidouillé qui me génère plein d'erreur. Je ne sais plus quoi 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
    ouvrir.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        Panel onglet=new Panel();
        onglet.setSize(500, 50);
        onglet.setLayout(getLayout());
        int rep = fileDialog.showOpenDialog(this);
        if (rep == FileDialog.APPROVE_OPTION) {	
          File file = fileDialog.getSelectedFile();
          if (file.exists()) {
            try {
              FileInputStream in = new FileInputStream(file);
              byte[] bytes = new byte[in.available()];
              in.read(bytes);
              getJTextArea().setText(new String(bytes));
              scrollPane = new JScrollPane(getJTextArea());
              onglet.add(scrollPane);
              tableauDocuments.add("Document"+ nbredoc ,onglet);
            } catch (FileNotFoundException e1) {
              System.out.println("erreur ici");
              e1.printStackTrace();
            } catch (IOException e1) {
              System.out.println("non ici");
              e1.printStackTrace();
            }	
          } 
        }
      }
     
      private javax.swing.JTextArea getJTextArea() {
        if(jTextArea == null) {
          jTextArea = new javax.swing.JTextArea();
        }
        return jTextArea;
      }
    });

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Un exemple :
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
     
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.filechooser.FileFilter;
     
     
    public class Test implements ActionListener {
    	private JFrame frame;
    	private JButton open, save;
    	private JTextArea texte;
    	private FileFilter filter;
     
    	public Test() {
    		frame = new JFrame("Mon éditeur");
     
    		open = new JButton("Ouvrir");
    		open.addActionListener(this);
    		frame.add(open, BorderLayout.NORTH);
     
    		texte = new JTextArea();
    		texte.setAutoscrolls(true);
    		frame.add(texte, BorderLayout.CENTER);
     
    		save = new JButton("Sauvegarder");
    		save.addActionListener(this);
    		frame.add(save, BorderLayout.SOUTH);
     
    		filter = new FileFilter() {
     
    			@Override
    			public String getDescription() {
    				return "Fichiers textes";
    			}
     
    			@Override
    			public boolean accept(File f) {
    				if(f.getName().endsWith("txt"))return true;
    				return false;
    			}
    		};
     
    		frame.setSize(250, 400);
    		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		frame.setVisible(true);
    	}
     
     
    	public void saveFile(String contenu, String file) {
    		try {
    			PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(file)));
     
    			writer.write(contenu);
     
    			writer.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public String readFile(String file) {
    		try {
    			BufferedReader reader = new BufferedReader(new FileReader(file));
    			String ligne;
    			StringBuffer fichier = new StringBuffer();
     
    			while((ligne = reader.readLine()) != null){
    				fichier.append(ligne);
    				fichier.append("\n");			
    			}
    			reader.close();
     
    			return fichier.toString();		
    		} catch (IOException e) {
    			return e.getMessage();
    		}
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource()==open){
    			JFileChooser chooser = new JFileChooser();
    			chooser.setFileFilter(filter);
     
    			int returnVal = chooser.showOpenDialog(frame);
     
    			if(returnVal==JFileChooser.APPROVE_OPTION){
    				String s = readFile(chooser.getSelectedFile().getPath());
    				texte.setText(s);				
    			}
    		}else if(e.getSource()==save){
    			JFileChooser chooser = new JFileChooser();
    			chooser.setFileFilter(filter);
     
    			int returnVal = chooser.showSaveDialog(frame);
     
    			if(returnVal==JFileChooser.APPROVE_OPTION){
    				String s = chooser.getSelectedFile().getPath();
    				s = s.endsWith(".txt")?s:s+".txt";
     
    				saveFile(texte.getText(), s);
    			}
    		}
    	}
     
    	public static void main(String[] args) {
    		new Test();
    	}
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Merci,
    je le teste et te tient au courant.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Merci pour le code; en revanche j'ai encore un petit souci.
    Dans out.write(contenu), j'ai mis jtextarea.getText() pour qu'il me retourne le contenu de la jtextarea.
    Le probleme c'est que je ne sais pas comment lui dire de que jtextarea est celui dans lequel on se trouve(la souris se trouve).
    Au fait j'ai un un jtabbedpane avec plusieurs onglets contenant des jtextarea et je veux qu'il enregistre le contenu de celui dans lequel je suis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try { 
      FileWriter lu = new FileWriter(monFichier); 
      BufferedWriter out = new BufferedWriter(lu);
      out.write(jtextarea.getText()); 
      out.close(); 
    } catch (IOException er) {
    ;}

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Personne pour m'aider?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Tu peux mettre un bouton par Tab.
    Ou alors un truc du style si le Tab 1 est sélectionné le textarea est le textarea1.
    Ou enfin, tu fais un JTextArea active_textearea; que tu change à chaque changement de tab avec un ChangeListener.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Pourrais tu m'expliquer un peu plus stp.
    Justement j'essaye d'utiliser " si tab 1 alors jtextarea est jtextarea1" avec:

    JTabbedPane tableauDocuments;
    tableauDocuments.getComponentAt( tableauDocuments.getSelectedIndex()).getComponentAt(0, 0);

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    il me semble que j'arrive à retourner l'onglet sur lequel j'ai cliqué par le biais de la methode tableauDocuments.getSelectedComponent().
    Mais comment retourner le jtextarea contenu dans l'onglet; l'onglet étant un jpanel.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Tu peux faire comme 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
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
     
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextArea;
    import javax.swing.filechooser.FileFilter;
     
     
    public class Test implements ActionListener {
    	private JFrame frame;
    	private JTabbedPane tab;
    	private JButton open, save;
    	private FileFilter filter;
     
    	public Test() {
    		frame = new JFrame("Mon éditeur");
     
    		tab = new JTabbedPane();
    		frame.add(tab, BorderLayout.CENTER);
    		for(int i=0; i<5; i++){
    			tab.addTab(i+"", new JTextArea());
    		}
     
    		open = new JButton("Ouvrir");
    		open.addActionListener(this);
    		frame.add(open, BorderLayout.NORTH);		
     
    		save = new JButton("Sauvegarder");
    		save.addActionListener(this);
    		frame.add(save, BorderLayout.SOUTH);
     
    		filter = new FileFilter() {
     
    			@Override
    			public String getDescription() {
    				return "Fichiers textes";
    			}
     
    			@Override
    			public boolean accept(File f) {
    				if(f.getName().endsWith("txt"))return true;
    				return false;
    			}
    		};
     
    		frame.setSize(250, 400);
    		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		frame.setVisible(true);
    	}
     
     
    	public void saveFile(String contenu, String file) {
    		try {
    			PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(file)));
     
    			writer.write(contenu);
     
    			writer.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public String readFile(String file) {
    		try {
    			BufferedReader reader = new BufferedReader(new FileReader(file));
    			String ligne;
    			StringBuffer fichier = new StringBuffer();
     
    			while((ligne = reader.readLine()) != null){
    				fichier.append(ligne);
    				fichier.append("\n");			
    			}
    			reader.close();
     
    			return fichier.toString();		
    		} catch (IOException e) {
    			return e.getMessage();
    		}
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource()==open){
    			JFileChooser chooser = new JFileChooser();
    			chooser.setFileFilter(filter);
     
    			int returnVal = chooser.showOpenDialog(frame);
     
    			if(returnVal==JFileChooser.APPROVE_OPTION){
    				String s = readFile(chooser.getSelectedFile().getPath());
    				((JTextArea)tab.getSelectedComponent()).setText(s);				
    			}
    		}else if(e.getSource()==save){
    			JFileChooser chooser = new JFileChooser();
    			chooser.setFileFilter(filter);
     
    			int returnVal = chooser.showSaveDialog(frame);
     
    			if(returnVal==JFileChooser.APPROVE_OPTION){
    				String s = chooser.getSelectedFile().getPath();
    				s = s.endsWith(".txt")?s:s+".txt";
     
    				saveFile(((JTextArea)tab.getSelectedComponent()).getText(), s);
    			}
    		}
    	}
     
    	public static void main(String[] args) {
    		new Test();
    	}
    }
    Si c'est des JPanel que tu mets comme Tab, tu peux faire ta propre classe étendue de JPanel et tu lui rajoutes une méthode setText(String text) et getText() vers un TextField contenu dans ton JPanel perso.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    J'ai crée la classe RetournerOnglet comme suit; mais j'essaye dans l'événement enregistrer de faire appel à la fonction getText() mais j'ai une erreur.
    (String contenu =tableauDocuments.getSelectedIndex().getText()
    tableauDocuments.getSelectedIndex() renvoie bien le panel sur lequel je suis parce que quand je fait remove, il le ferme bien.
    Et mes panels je les ajoute maintenant avec ReournerOnglet p = new ReournerOnglet();

    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
    class ReournerOnglet extends JPanel{
     
    		JPanel p;
    		JTextArea j;
     
    	public ReournerOnglet(){
     
    		p= new JPanel();
    		j= new JTextArea();
    		p.add(j);
     
    	}				
     
    		public void setText(String text) { 				
    				j.append(text);
    			}
     
    			public String getText() { 				
    				return j.getText();
    			}
     
    	public static void main(String[ ] args) { 
    		@SuppressWarnings("unused")
    		ReournerOnglet f = new ReournerOnglet();
    		}
     
    }

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    1. La class que tu montres a un soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class ReournerOnglet extends JPanel{
        JPanel p;
        JTextArea j;
     
        public ReournerOnglet(){
            p= new JPanel();
            j= new JTextArea();
            p.add(j);
            ... ...
    Ta class EST un JPanel.
    Il faut que tu ajoutes le JTextArea a lui et non pas à un autre JPanel que tu as créé dedans.

    2. La méthode getSelectedIndex ne retourne pas ton composant, mais sa position.
    Il faut que tu arrives à lire les messages d'erreurs que tu obtiens dans la console !

    Pour récupérer le composant, il faut utiliser getSelectedComponent().
    Par contre attention, le type de retour est "Component", si tu veux pouvoir utiliser les méthodes de ton composant ReournerOnglet, il faut que tu Cast comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReournerOnglet mon_onglet = (ReournerOnglet)tableauDocuments.getSelectedComponent();
    Tu pourras ensuite faire ton getText() que tu as créé.

    Allez courage !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Grand merci pour ton aide.
    Quand je l'exécute j'ai le message: java.awt.Panel cannot be cast to ProjetAvecInterface.RetournerOnglet comme quoi je ne peux pas caster un jpanel avec.

    ma nvelle classe donne
    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
    class RetournerOnglet extends JPanel{
    		JTextArea j;
     
    	public RetournerOnglet(){
    		j= new JTextArea();
    		add(j);
     
    	}				
     
    		public void setText(String text) { 				
    				j.append(text);
    			}
     
    			public String getText() { 				
    				return j.getText();
    			}
     
    	public static void main(String[ ] args) { 
    		@SuppressWarnings("unused")
    		RetournerOnglet f = new RetournerOnglet();
    		}
     
    }

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Quand tu as une Exception, regarde vers quel ligne de ton code elle pointe.
    L'exception que tu m'indiques n'est pas issu de cette portion du code.
    Par contre ce que je peux noter suite au message :
    java.awt.Panel cannot be cast to ProjetAvecInterface.RetournerOnglet
    C'est que tu dois confondre : java.awt.Panel avec javax.swing.JPanel.
    Attention, même si elles se ressemblent beaucoup, ce ne sont pas les mêmes.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Je vois que la class n'est pas public, je suppose donc que tu as plusieurs class dans 1 fichier .java.

    Je pense que pour débuter, tu devrais faire 1 class pour 1 fichier .java.
    Tu auras moins de code sous les yeux en même temps, et je pense que c'est une bonne méthode pour mieux appréhender le côté programmation "Objet".

    Tu pourras mettre plusieurs class dans le même fichier quand tu maitriseras un peu plus.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Désolé de revenir encore.....

    J'ai fait ce que tu m'as indiqué. Je n'ai plus d'exception; en revanche, mon getText() ne me renvoie rien.
    Je fais un System.out.println("Contenu" +contenu); rien dans contenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RetournerOnglet mon_onglet = (RetournerOnglet)tableauDocuments.getSelectedComponent();
    		    String contenu=mon_onglet.getText();
     
    		    System.out.println("Contenu" +contenu);
    je crée mes onglets avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     RetournerOnglet p = new RetournerOnglet();
    					 p.setSize(500, 50);
    					 p.setLayout(getLayout());
    					 f = new JTextArea();
    				     p.add(f);
     
    				     nbredoc ++;
    			 tableauDocuments.add("Document"+ nbredoc ,p);

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    j'ai crée une classe pour RetournerOnglet


    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
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
     
    public class RetournerOnglet extends JPanel{
     
    	public static final long serialVersionUID = 1L;
    	JTextArea j;
     
    	public RetournerOnglet(){
    		j= new JTextArea();
    		add(j);
     
    	}				
     
    		public void setText(String text) { 				
    				j.append(text);
    			}
     
    			public String getText() { 				
    				return j.getText();
    			}
     
    	public static void main(String[ ] args) { 
    		@SuppressWarnings("unused")
    		RetournerOnglet f = new RetournerOnglet();
    		}
     
    }
    j'ai essayé de mettre j en static sans succès

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RetournerOnglet p = new RetournerOnglet();
    p.setSize(500, 50);
    p.setLayout(getLayout());
    f = new JTextArea();
    p.add(f);
    Attention, la méthode getText() que tu as créé, retourne le contenu du JTextArea qui est contenu dans ta class RetournerOnglet, et non pas du JTextArea que tu rajoutes par la suite.

    j'ai essayé de mettre j en static sans succès
    Essayer de passer j en static n'est pas une bonne solution.
    Ton composant a 2 méthodes getText et setText qui doivent servir à la gestion du contenu de ton composant.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    J'ai un peu ajusté pour exemple ta class RetournerOnglet :
    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
    import java.awt.BorderLayout;
     
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
     
     
    @SuppressWarnings("serial")
    public class RetournerOnglet extends JPanel{
    	private JTextArea j;
     
    	public RetournerOnglet(){
    		setLayout(new BorderLayout());
    		j= new JTextArea();
    		add(j, BorderLayout.CENTER);
    	}
     
    	public void setText(String text) {
    		j.append(text);
    	}
     
    	public String getText() {
    		return j.getText();
    	}	
    }
    Au passage, je n'aime pas trop son nom.
    Ta class représente un composant que l'on ajoute dans un onglet.
    Pas une méthode qui permet de le retourner.

    Et voici le code que je t'avais déjà proposé, mais au lieu d'ajouter directement des JTextArea, je rajoute ta class :
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
     
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextArea;
    import javax.swing.filechooser.FileFilter;
     
     
    public class Test implements ActionListener {
    	private JFrame frame;
    	private JTabbedPane tab;
    	private JButton open, save;
    	private FileFilter filter;
     
    	public Test() {
    		frame = new JFrame("Mon éditeur");
     
    		tab = new JTabbedPane();
    		frame.add(tab, BorderLayout.CENTER);
    		for(int i=0; i<5; i++){
    			tab.addTab(i+"", new RetournerOnglet());
    		}
     
    		open = new JButton("Ouvrir");
    		open.addActionListener(this);
    		frame.add(open, BorderLayout.NORTH);		
     
    		save = new JButton("Sauvegarder");
    		save.addActionListener(this);
    		frame.add(save, BorderLayout.SOUTH);
     
    		filter = new FileFilter() {
     
    			@Override
    			public String getDescription() {
    				return "Fichiers textes";
    			}
     
    			@Override
    			public boolean accept(File f) {
    				if(f.getName().endsWith("txt"))return true;
    				return false;
    			}
    		};
     
    		frame.setSize(250, 400);
    		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		frame.setVisible(true);
    	}
     
     
    	public void saveFile(String contenu, String file) {
    		try {
    			PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(file)));
     
    			writer.write(contenu);
     
    			writer.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public String readFile(String file) {
    		try {
    			BufferedReader reader = new BufferedReader(new FileReader(file));
    			String ligne;
    			StringBuffer fichier = new StringBuffer();
     
    			while((ligne = reader.readLine()) != null){
    				fichier.append(ligne);
    				fichier.append("\n");			
    			}
    			reader.close();
     
    			return fichier.toString();		
    		} catch (IOException e) {
    			return e.getMessage();
    		}
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource()==open){
    			JFileChooser chooser = new JFileChooser();
    			chooser.setFileFilter(filter);
     
    			int returnVal = chooser.showOpenDialog(frame);
     
    			if(returnVal==JFileChooser.APPROVE_OPTION){
    				String s = readFile(chooser.getSelectedFile().getPath());
    				((RetournerOnglet)tab.getSelectedComponent()).setText(s);				
    			}
    		}else if(e.getSource()==save){
    			JFileChooser chooser = new JFileChooser();
    			chooser.setFileFilter(filter);
     
    			int returnVal = chooser.showSaveDialog(frame);
     
    			if(returnVal==JFileChooser.APPROVE_OPTION){
    				String s = chooser.getSelectedFile().getPath();
    				s = s.endsWith(".txt")?s:s+".txt";
     
    				saveFile(((RetournerOnglet)tab.getSelectedComponent()).getText(), s);
    			}
    		}
    	}
     
    	public static void main(String[] args) {
    		new Test();
    	}
    }

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    C'est magique.....rire
    Je ne sais comment te remercier. Encore MERCI ! Et de passage je vais modifier le nom de ma classe retourneronglet(une moindre façon de te dire merci).

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Merci pour le changement de nom
    Penses à mettre résolu ! a plus et bon courage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir un fichier dans une nouvelle fenêtre
    Par paradeofphp dans le forum ASP.NET
    Réponses: 17
    Dernier message: 20/11/2007, 15h31
  2. Réponses: 5
    Dernier message: 17/01/2007, 12h52
  3. placer un texte dans une textarea en cliquant sur un bouton
    Par BernardT dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/11/2005, 17h17
  4. Réponses: 4
    Dernier message: 14/11/2005, 15h58

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