Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2750 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Editeur de Texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Editeur de Texte

n°972081
arrau
Ludwig von 54
Posté le 04-02-2005 à 17:32:35  profilanswer
 

Bonjour,
 
je suis en train de me programmer un petit éditeur de texte (genre bloc-notes), qui marche bien mais est assez simple et je voudrais l'améliorer.
Il est composé de 4 JButtons (ouvrir, enregistrer sous, enregistrer et quitter) et un JScrollPane.
 
Déjà, j'ai un problème avec la JTextArea (qui est incluse dans un JScrollPane): je voudrais qu'elle s'adapte à la taille de la fenêtre.
On m'a dit qu'il fallait que je gère les évenements sur la taille du cadre, mais quel Listener implanter? et surtout où?
 
De plus, concernant le JFileChooser (pour ouvrir et enregistrer sous), je voudrais qu'il s'ouvre sur un repertoire précis et qu'il ne m'affiche que les fichiers Text (et les répertoires), comment faire?
 
Et aussi, je cherche un bon éditeur Java sous Linux.
 
Merci beaucoup.

mood
Publicité
Posté le 04-02-2005 à 17:32:35  profilanswer
 

n°972102
nraynaud
lol
Posté le 04-02-2005 à 17:43:30  profilanswer
 

tu donnes un BorderLayout comme layoutManager au contentPane de ta frame et au momment du add() du scrollpane, tu lui passes BorderLayout.CENTER comme deuxième paramètre. Va lire le tutorial sur les layoutManager :
http://java.sun.com/docs/books/tut [...] ng/layout/
 
concernant le filechooser, tout est là :
http://java.sun.com/docs/books/tut [...] ooser.html

n°972130
arrau
Ludwig von 54
Posté le 04-02-2005 à 17:51:28  profilanswer
 

Merci pour les liens  :)  
Le FileChooser ça devrait aller
 

nraynaud a écrit :

tu donnes un BorderLayout comme layoutManager au contentPane de ta frame et au momment du add() du scrollpane, tu lui passes BorderLayout.CENTER comme deuxième paramètre.


 
Voila ce que j'ai tapé pour creer le JScrollPane
 

Code :
  1. texte=new JTextArea(20,30);
  2. texte.setLineWrap(true);
  3. scroll=new JScrollPane(texte);
  4. JPanel PanneauCentre=new JPanel();
  5. PanneauCentre.add(scroll);
  6.      
  7.      
  8. setLayout(new BorderLayout());
  9. add(PanneauNord,BorderLayout.NORTH);
  10. add(PanneauCentre,BorderLayout.CENTER);


 
Mais quand j'agrandis la taille de la fenêtre de l'éditeur, la JTextArea garde sa taille de (20,30), et moi je voudrais que la zone de texte s'adapte à la taille du cadre entier.
 

n°972146
nraynaud
lol
Posté le 04-02-2005 à 17:56:58  profilanswer
 

oui, vire les arguments du texte=new JTextArea(20,30);  
en faisant ça, tu dis que la taille préférée du textArea est de 20 colones et 30 lignes, donc pas la peine de redimmentionner si ces 20 colones et 30 lignes sont visibles.
 

n°972183
EpoK
Let's burn
Posté le 04-02-2005 à 18:19:26  profilanswer
 

si tu cherches des idées t'as la demo de sun :
 
jdk1.5.0_01\demo\jfc\Notepad

n°972692
Jubijub
Parce que je le VD bien
Posté le 05-02-2005 à 12:09:59  profilanswer
 

je te recommande aussi de jeter un coup d'oeil au JEdit TextArea, dont les sources de la V21 sont dipso sur sourceforge...c un textArea qui gère la coloration syntaxique...Et qu'on peut facilement upgrader pour qu'il gère les undo/redo, la numérotation des lignes, le magic carret, et autre


---------------
Jubi Photos : Flickr - 500px
n°972715
nraynaud
lol
Posté le 05-02-2005 à 12:33:45  profilanswer
 

Jubi > oué comme un textArea de base quoi.


---------------
trainoo.com, c'est fini
n°973017
arrau
Ludwig von 54
Posté le 06-02-2005 à 00:46:40  profilanswer
 

Merci :)
 
Quand j'enlève les arguments, le JTextArea devient tout petit.

n°973490
Jubijub
Parce que je le VD bien
Posté le 06-02-2005 à 20:03:45  profilanswer
 

oui il a des soucis de taille...mais un jscrollPane et hop !!


---------------
Jubi Photos : Flickr - 500px
n°975301
arrau
Ludwig von 54
Posté le 08-02-2005 à 13:03:09  profilanswer
 

J'ai déjà mis un JScrollPane ;)
C'est impossible d'avoir une zone de texte qui s'adapte à la taille de la fenêtre?


Message édité par arrau le 08-02-2005 à 13:03:41
mood
Publicité
Posté le 08-02-2005 à 13:03:09  profilanswer
 

n°975339
glod 2
Votre trajet, notre projet.
Posté le 08-02-2005 à 13:34:50  profilanswer
 

Ben si avec un layout.
Style en mettant ça dans le center d'un borderlayout. (comme dit par nraynaud au second post du topic)

n°975810
arrau
Ludwig von 54
Posté le 08-02-2005 à 21:01:53  profilanswer
 

Mais j'ai mis mon JScrollPane au centre d'un borderlayout ^^

n°975972
Jubijub
Parce que je le VD bien
Posté le 09-02-2005 à 00:23:05  profilanswer
 

ben je sais pas moi je l'ai utilisé cet été avec un layout et dans un jscrollpane et ca a très bien marché...


---------------
Jubi Photos : Flickr - 500px
n°976088
arrau
Ludwig von 54
Posté le 09-02-2005 à 09:45:05  profilanswer
 

Je dois mal m'expliquer à mon avis :)
 
Quand j'ouvre mon éditeur, ça donne ça:
http://site.voila.fr/arraudyn/Editeur1.JPG
 
 
Quand j'agrandis, ça:
http://site.voila.fr/arraudyn/editeur2.JPG
 
Je voudrais que lorsque j'agrandis, la zone de texte prenne la taille de la fenêtre (comme le notepad de windows).

n°976105
rompi
Posté le 09-02-2005 à 09:52:56  profilanswer
 

Alt+Impr Ecran pour ne capturer qu'une seul fenêtre  :whistle:
 
Plus sérieusement, il ne faut pas que tu fasse un BorderLayout a mon avis...
Penche toi sur un GridBagLayout
C'est le plus chiant des Layout mais ca marchera!
 

Code :
  1. /** */
  2. private GridBagConstraints gbc;
  3. /** */
  4. private GridBagLayout gbl;
  5. private void initGbc(int x,int y,int gw,int gh,int wx,int wy) {
  6.  gbc.gridx = x;
  7.  gbc.gridy = y;
  8.  gbc.gridwidth = gw;
  9.  gbc.gridheight = gh;
  10.  gbc.weightx = wx;
  11.  gbc.weighty = wy;
  12. }
  13. ....
  14.  initGbc(0,0,1,1,100,100);
  15.  this.gbl.setConstraints(tonTextArea,this.gbc);
  16.  gbc.fill = GridBagConstraints.BOTH; // il force l'agrandissement dans tous le container: horizontalement et verticalement
  17.  gbc.anchor = GridBagConstraints.CENTER;
  18.  this.getContentPane().add(tonTextArea);
  19. ....


 
si ca ne suffis pas, tu peux toujours appelé doLayout() (je croix que c'est ca) dans la méthode repaint...


Message édité par rompi le 09-02-2005 à 10:02:36
n°976133
nraynaud
lol
Posté le 09-02-2005 à 10:08:20  profilanswer
 

arrau a écrit :

Je dois mal m'expliquer à mon avis :)
 
Quand j'ouvre mon éditeur, ça donne ça:
http://site.voila.fr/arraudyn/Editeur1.JPG
 
 
Quand j'agrandis, ça:
http://site.voila.fr/arraudyn/editeur2.JPG
 
Je voudrais que lorsque j'agrandis, la zone de texte prenne la taille de la fenêtre (comme le notepad de windows).


heu, tu as un panel dans un panel là, et celui de l'extérieur est inutile.
au lieu de faire getContentPane().add(panel), fait directement setContentPane(panel)

n°976232
arrau
Ludwig von 54
Posté le 09-02-2005 à 11:29:56  profilanswer
 

nraynaud a écrit :

heu, tu as un panel dans un panel là, et celui de l'extérieur est inutile.


 
Comment ça?
J'ai un JTextArea inclus dans un JScrollPane.
 
Je vais essayer ça ce soir.
Je savais pas pour le Alt+Impr Ecran :)

n°976233
nraynaud
lol
Posté le 09-02-2005 à 11:31:51  profilanswer
 

c'est un menu que tu as au-dessus ?

n°976877
arrau
Ludwig von 54
Posté le 09-02-2005 à 18:40:58  profilanswer
 

Oui j'ai changé les boutons pour un JMenuBar
Je vais revoir la disposition du panneau NORTH  :)


Message édité par arrau le 09-02-2005 à 19:25:22
n°1001774
colpompido​u
Posté le 05-03-2005 à 15:07:31  profilanswer
 

J'ai aussi essayé de faire un petit éditeur de texte en Java :

Code :
  1. import java.awt.event.*;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.io.*;
  5. public class Notepad extends JFrame implements ActionListener,ItemListener{
  6.     JToolBar barre= new JToolBar();
  7.     JButton ouvrir = new JButton("Ouvrir" );
  8.     JButton enregistrer = new JButton("Enregistrer" );
  9.     JButton enregistrersous = new JButton("Enregistrer sous ..." );
  10.     JButton copier = new JButton("Copier" );
  11.     JButton couper = new JButton("Couper" );
  12.     JButton coller = new JButton("Coller" );
  13.     JButton fermer = new JButton("Fermer" );
  14.     JButton quitter = new JButton("Quitter" );
  15.     JComboBox police = new JComboBox();
  16.     JComboBox style = new JComboBox();
  17.     JComboBox taille = new JComboBox();
  18.     JTextArea edition = new JTextArea(8,40);
  19.     JEditorPane edition2 = new JEditorPane();
  20.     JScrollPane scroll = new JScrollPane(edition);
  21.     File fichier_courant = null;
  22.     String police_courante = "Dialog";
  23.     int style_courant = 0;
  24.     int taille_courante = 12;
  25.    
  26.     public Notepad() {
  27.         super("Editeur de texte simple" );
  28.         setSize(640,480);
  29.        
  30.         ouvrir.addActionListener(this);
  31.         ouvrir.setActionCommand("Ouvrir" );
  32.         enregistrer.addActionListener(this);
  33.         enregistrer.setActionCommand("Enregistrer" );
  34.         enregistrersous.addActionListener(this);
  35.         enregistrersous.setActionCommand("Enregistrer sous" );
  36.         fermer.addActionListener(this);
  37.         fermer.setActionCommand("Fermer" );
  38.         quitter.addActionListener(this);
  39.         quitter.setActionCommand("Quitter" );
  40.         copier.addActionListener(this);
  41.         copier.setActionCommand("Copier" );
  42.         couper.addActionListener(this);
  43.         couper.setActionCommand("Couper" );
  44.         coller.addActionListener(this);
  45.         coller.setActionCommand("Coller" );
  46.         police.addItemListener(this);
  47.         police.addItem("Dialog" );
  48.         police.addItem("Courier" );
  49.         police.addItem("Arial" );
  50.         police.addItem("Times New Roman" );
  51.         style.addItemListener(this);
  52.         style.addItem("Normal" );
  53.         style.addItem("Gras" );
  54.         style.addItem("Italique" );
  55.         style.addItem("Gras & Italique" );
  56.         taille.addItemListener(this);
  57.         taille.addItem("12" );
  58.         taille.addItem("14" );
  59.         taille.addItem("16" );
  60.         edition.setFont(new Font(police_courante,style_courant,taille_courante));
  61.        
  62.         barre.add(ouvrir);
  63.         barre.add(enregistrer);
  64.         barre.add(enregistrersous);
  65.         barre.add(copier);
  66.         barre.add(couper);
  67.         barre.add(coller);
  68.         barre.add(fermer);
  69.         barre.add(police);
  70.         barre.add(style);
  71.         barre.add(taille);
  72.         barre.add(quitter);
  73.         JPanel pane = new JPanel();
  74.         BorderLayout bord = new BorderLayout();
  75.         pane.setLayout(bord);
  76.         pane.add("North",barre);
  77.         pane.add("Center", scroll);
  78.        
  79.         setContentPane(pane);
  80.     }
  81.     public void actionPerformed(ActionEvent e) {
  82.         if(e.getActionCommand()=="Ouvrir" ) {
  83.             JFileChooser chooser = new JFileChooser();
  84.             chooser.setDialogTitle("Ouvrir un fichier ..." );
  85.             chooser.showOpenDialog(this);
  86.             if(chooser.getSelectedFile()==null){
  87.                 return;
  88.             }
  89.             fichier_courant=chooser.getSelectedFile();
  90.             try {
  91.                 FileInputStream fichier = new FileInputStream(chooser.getSelectedFile());
  92.                 int size=fichier.available();
  93.                 byte[] bytes = new byte[size];
  94.                 fichier.read(bytes);
  95.                 edition.setText(new String(bytes));
  96.                 fichier.close();
  97.             } catch (IOException erreur) {
  98.                 JOptionPane.showMessageDialog(null,"Erreur --- "+erreur.toString(),"Erreur",JOptionPane.ERROR_MESSAGE);
  99.             }
  100.         }
  101.         else if(e.getActionCommand()=="Enregistrer" ) {
  102.             if(fichier_courant==null) saveas();
  103.             else save();
  104.         }
  105.         else if(e.getActionCommand()=="Enregistrer sous" ) {
  106.             saveas();
  107.         }
  108.         else if(e.getActionCommand()=="Fermer" ) {
  109.             fichier_courant=null;
  110.             edition.setText("" );
  111.         }
  112.         else if(e.getActionCommand()=="Copier" ) {
  113.             edition.copy();
  114.             edition.setCaretPosition(0);
  115.         }
  116.         else if(e.getActionCommand()=="Couper" ) {
  117.             edition.cut();
  118.             edition.setCaretPosition(0);
  119.         }
  120.         else if(e.getActionCommand()=="Coller" ) {
  121.             edition.paste();
  122.         }
  123.         else if(e.getActionCommand()=="Quitter" ) {
  124.             System.exit(0);
  125.         }
  126.     }
  127.        
  128.     public void itemStateChanged(ItemEvent e) {
  129.         if(e.getSource()==police){
  130.             police_courante=e.getItem().toString();
  131.         }
  132.         else if(e.getSource()==style) {
  133.             style_courant=style.getSelectedIndex();
  134.         }
  135.         else if(e.getSource()==taille){
  136.             Integer taille_courante2=new Integer(e.getItem().toString());
  137.             taille_courante=taille_courante2.intValue();
  138.         }
  139.         edition.setFont(new Font(police_courante,style_courant,taille_courante));
  140.     }
  141.     public void saveas(){
  142.         JFileChooser chooser = new JFileChooser();
  143.         chooser.setDialogTitle("Enregistrer le fichier sous ..." );
  144.         chooser.showSaveDialog(this);
  145.         if(chooser.getSelectedFile()==null) {
  146.             return;
  147.         }
  148.         fichier_courant=chooser.getSelectedFile();
  149.         save();
  150.     }
  151.     public void save(){
  152.         try {
  153.             FileOutputStream fichier = new FileOutputStream(fichier_courant);
  154.             fichier.write(edition.getText().getBytes());
  155.             fichier.close();
  156.         } catch (IOException erreur) {
  157.             JOptionPane.showMessageDialog(null,"Erreur --- "+erreur.toString(),"Erreur",JOptionPane.ERROR_MESSAGE);
  158.         }
  159.     }
  160.    
  161.     public static void main(String[] args){
  162.         try {
  163.             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  164.         } catch (Exception e) {
  165.             JOptionPane.showMessageDialog(null,"Erreur --- "+e.toString(),"Erreur",JOptionPane.ERROR_MESSAGE);
  166.         }
  167.         JFrame frame = new Notepad();
  168.         ExitWindow exit=new ExitWindow();
  169.         frame.addWindowListener(exit);
  170.         frame.show();
  171.     }
  172. }
  173. class ExitWindow extends WindowAdapter {
  174.     public void windowClosing(WindowEvent e){
  175.         System.exit(0);
  176.     }
  177. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Editeur de Texte

 

Sujets relatifs
[Java] JFileChooser qui m'obéit pas...affichage automatique dans zone texte grace listbox
Java ou javascript?[Java][JDBC]Quelle SGBD/R open source utiliser ?
Envoi fichier java rmiTypes Mime : ouvrir un fichier .sql avec un éditeur
[Java] probleme out.write()[Java] Faire un tableau avec ce que je veux dedans
java et pdf[Java] Créer un editeur de texte gérant la coloration syntaxique
Plus de sujets relatifs à : [Java] Editeur de Texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR