Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/12/2011, à 01:07

Bat_Tuc

Modification de jTextArea [ JAVA ]

Bonjour a tous,
je fais un petit programme avec interface graphique avec un bouton " +" et un "-" servant a modifier la taille et la police d'écriture d'un jTextArea présent sur ma fenetre.
Voila mon code ( pour le plus, il suffit de faire - pour diminuer )

private void jButtonPlusActionPerformed(java.awt.event.ActionEvent evt) {                                            
// j'augmente la taille de la police ! ca marche 
 jTextArea1.setFont(newFont(jTextArea1.getFont().getName(),jTextArea1.getFont().getSize(),jTextArea1.getFont().getSize() + 2));
        
// je recupere la dimension actuelle 
Dimension d=jTextArea1.getSize();

// je crée une nouvelle dimension avec hauteur augmenté 
        Dimension d2=new Dimension((int)d.getWidth(),(int) d.getHeight()+20);
// je l'applique a mon jTextArea ca marche pas ..
        jTextArea1.setSize(d2);
// OU qui ne marche pas non plus
 double h= d.getHeight()+20;
     jTextArea1.setSize((int)(d.getWidth()),(int) h);
}

ca marche tres bien pour la taille de la police mais pas pour la taille de l'objet en lui meme ..
Peut on modifier la taille d'une jTextArea comme ca ?

j'attend vos réponses avec impatience smile

Dernière modification par Bat_Tuc (Le 19/12/2011, à 01:15)


Un jour mon père m' a dit " fils, si ton programme tourne, c est qu il peut faire mieux ..."

Hors ligne

#2 Le 21/12/2011, à 14:08

wawan60

Re : Modification de jTextArea [ JAVA ]

Bonjour,

Assé étrange comme comportement, je me suis intéressé à ton problème et il s'avère que j'arrive à modifier la size du JtextArea OU la size de font. Voici mon code :

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.Font;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;


public class Interface extends JFrame{
    
    private JTextArea a1;
    private JButton p;
    private JButton m;
    
    public Interface(){
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.a1 = new JTextArea("Default String");
        this.getContentPane().add(a1, BorderLayout.CENTER);
        
        JPanel j = new JPanel();
        this.p = new JButton("+");
        this.p.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                a1.setSize((int)a1.getSize().getWidth(),(int) ((int)a1.getSize().getHeight()+20.0));
                //a1.setFont(new Font(a1.getFont().getName(), a1.getFont().getStyle(), a1.getFont().getSize()+2));
            }
        });
        
        this.m = new JButton("-");
        this.m.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                a1.setSize((int)a1.getSize().getWidth(), (int) ((int)a1.getSize().getHeight()-20.0));
                //a1.setFont(new Font(a1.getFont().getName(), a1.getFont().getStyle(), a1.getFont().getSize()-2));
            }
        });
        j.add(p);
        j.add(m);
        this.getContentPane().add(j, BorderLayout.WEST);
        this.setVisible(true);
        this.setSize(400, 400);
        
    }
    
    public static void main(String args[]){
        Interface i = new Interface();
    }

}

Comme tu peux le voir, j'aii mis le changement de font en commentaire, et dans ce cas la taille de la JtextArea change. Tu peux tester wink
Je vais regarder sa de plus près.

EDIT :

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;


public class Interface extends JFrame{
    
    private JTextArea a1;
    private JButton p;
    private JButton m;
    private JButton pp;
    private JButton mm;
    
    public Interface(){
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.a1 = new JTextArea("Default String");
        this.getContentPane().add(a1, BorderLayout.CENTER);
        
        JPanel j = new JPanel();
        this.p = new JButton("+");
        this.p.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                a1.setSize((int)a1.getSize().getWidth(),(int) ((int)a1.getSize().getHeight()+20.0));
            }
        });
        
        this.m = new JButton("-");
        this.m.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                a1.setSize((int)a1.getSize().getWidth(), (int) ((int)a1.getSize().getHeight()-20.0));
            }
        });
        this.pp = new JButton("+");
        this.pp.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                a1.setFont(new Font(a1.getFont().getName(), a1.getFont().getStyle(), a1.getFont().getSize()+2));
            }
        });
        
        this.mm = new JButton("-");
        this.mm.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                a1.setFont(new Font(a1.getFont().getName(), a1.getFont().getStyle(), a1.getFont().getSize()-2));
            }
        });
        j.add(p);
        j.add(m);
        j.add(pp);
        j.add(mm);
        this.getContentPane().add(j, BorderLayout.WEST);
        this.setVisible(true);
        this.setSize(400, 400);
        
    }
    
    public static void main(String args[]){
        Interface i = new Interface();
    }

}

Avec ce nouveau code, tu verras un peu mieux le comportement de la JtextArea, elle se réinitialise lors d'un changement de font. Mais ce n'est pas pour autant que quand on fait le setSize après le setsize du font que sa change quelque chose.

Dernière modification par wawan60 (Le 21/12/2011, à 14:21)


Mon site -> www.retro-wuseum.hostzi.com
Grace Hopper : Pour moi, la programmation est plus qu'un art appliqué important. C'est aussi une ambitieuse
quête menée dans les tréfonds de la connaissance

Hors ligne

#3 Le 21/12/2011, à 20:18

pingouinux

Re : Modification de jTextArea [ JAVA ]

Bonsoir,
Intrigué aussi par ce comportement étrange, j'ai fait quelques tests avec le second script de wawan60 #2. J'ai déclaré une variable F de type Font, et l'ai l'initialisée à a1.getFont(). J'ai modifié la séquence qui diminue la taille des caractères, en remplaçant cette ligne :

a1.setFont(new Font(a1.getFont().getName(), a1.getFont().getStyle(), a1.getFont().getSize()-2));

par

// F=new Font(F.getName(), F.getStyle(), F.getSize());
a1.setFont(F); // La fenêtre conserve sa hauteur

ou

F=new Font(F.getName(), F.getStyle(), F.getSize());
// a1.setFont(F); // La fenêtre conserve sa hauteur

ou

F=new Font(F.getName(), F.getStyle(), F.getSize());
a1.setFont(F); // La fenêtre est ramenée à sa hauteur initiale

La taille des caractères ne change évidemment pas, mais la fenêtre conserve sa hauteur dans les 2 premiers cas, et reprend sa taille initiale dans le dernier.

Si ça peut donner une idée à quelqu'un...

Hors ligne

#4 Le 22/12/2011, à 01:19

Bat_Tuc

Re : Modification de jTextArea [ JAVA ]

Merci les gars c'est chouette d'avoir des reponses. smile
donc si j'ai bien compris le changement de Font réinitialise la taille ( je voudrais surtout modifier la hauteur ) de mon jTextArea ?
donc je dois faire soit l'un soit l'autre ?
Parce que jusqu'a présent mon bouton " +" faisait bien augmenter la taille ( de meme que mon moins la diminuait ) de l'écriture mais pas de la fenetre en gros ..


Un jour mon père m' a dit " fils, si ton programme tourne, c est qu il peut faire mieux ..."

Hors ligne

#5 Le 22/12/2011, à 11:38

wawan60

Re : Modification de jTextArea [ JAVA ]

T'as tout compris, pour l'instant, soit l'un, soit l'autre.

C'est vraiment étrange ... surtout pour le changement de font. Même en ajoutant un jscrollpane le comportement est le même. Je vais m'abonner à ce topic, sa me paraît assé intérésant. Je vais continuer de tester wink

Dernière modification par wawan60 (Le 22/12/2011, à 11:39)


Mon site -> www.retro-wuseum.hostzi.com
Grace Hopper : Pour moi, la programmation est plus qu'un art appliqué important. C'est aussi une ambitieuse
quête menée dans les tréfonds de la connaissance

Hors ligne

#6 Le 22/12/2011, à 19:13

Bat_Tuc

Re : Modification de jTextArea [ JAVA ]

J'ai essayé de ne faire que augmente la taille
et ca ne marche pas .. tant pis pour l'instant ca sera seulement l'écriture alors smile


Un jour mon père m' a dit " fils, si ton programme tourne, c est qu il peut faire mieux ..."

Hors ligne

#7 Le 22/12/2011, à 19:21

wawan60

Re : Modification de jTextArea [ JAVA ]

Bat_Tuc a écrit :

J'ai essayé de ne faire que augmente la taille
et ca ne marche pas .. tant pis pour l'instant ca sera seulement l'écriture alors smile

Pour la taille, j'ai définis le comportement dans mon premier morceau de code.


Mon site -> www.retro-wuseum.hostzi.com
Grace Hopper : Pour moi, la programmation est plus qu'un art appliqué important. C'est aussi une ambitieuse
quête menée dans les tréfonds de la connaissance

Hors ligne

#8 Le 22/12/2011, à 22:35

Bat_Tuc

Re : Modification de jTextArea [ JAVA ]

wawan60 a écrit :
Bat_Tuc a écrit :

J'ai essayé de ne faire que augmente la taille
et ca ne marche pas .. tant pis pour l'instant ca sera seulement l'écriture alors smile

Pour la taille, j'ai définis le comportement dans mon premier morceau de code.

c'est "marrant" quand je recopie tout ton code et que j'éxécute sa marche, mais quand j'essaye de l'appliquer a mon projet bah ca marche plus ..


Un jour mon père m' a dit " fils, si ton programme tourne, c est qu il peut faire mieux ..."

Hors ligne

#9 Le 23/12/2011, à 20:27

wawan60

Re : Modification de jTextArea [ JAVA ]

Si tu veux, je peux regarder ton code.


Mon site -> www.retro-wuseum.hostzi.com
Grace Hopper : Pour moi, la programmation est plus qu'un art appliqué important. C'est aussi une ambitieuse
quête menée dans les tréfonds de la connaissance

Hors ligne

#10 Le 26/12/2011, à 23:53

Bat_Tuc

Re : Modification de jTextArea [ JAVA ]

je veux bien mais je code un peu comme un porc ( pas trop commenter ) ..
comment je peux t'envoyer ca ?


Un jour mon père m' a dit " fils, si ton programme tourne, c est qu il peut faire mieux ..."

Hors ligne