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

NetBeans Java Discussion :

JXTable, changer la taille de la police


Sujet :

NetBeans Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut JXTable, changer la taille de la police
    Salut tous !

    Sur ma frame (Windows - Netbeans6.1) j'ai une JXTable dont la fonte par défaut est Tahoma 11 plain;
    Je donne à l'utilisateur la possibilité de changer la taille de la police, comme ceci :

    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
     
    int tailleDemandee = user.choix  ... disons 18
    try {
                String fName =  jXTable1.getFont().getFontName();
                int fStyle =  jXTable1.getFont().getStyle();
                int fSize =  jXTable1.getFont().getSize();
                int taille =  tailleDemandee;
                try {
                    jXTable1.setFont(new Font(fName,fStyle,taille));
                }      
                catch (Exception ex) {
                    jXTable1.setFont(new Font(fName,fStyle,fSize));
                }
           }
            catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex);
           }
    L'ennui c'est que si je sélectionne une cellule (double-clic) ou par code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jXTable1.editCellAt(1,0);
    dans cette cellule uniquement la taille de la police redevient celle par défaut (11)... et quand je quitte la cellule en question la taille redevient celle demandée (18)
    comment faire pour que la taille du texte de la cellule sélectionnée ne change pas ?

    merci.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Il faut modifier la Font dans l'éditeur également.
    Au passage, la modification de la Font peut se faire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
    {
      try
      {
        jXTable1.setFont( jXTable1.getFont().deriveFont( (float)tailleDemandee );
      }
      catch (Exception ex)
      {
        //traitement de l'exception si necessaire
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    merci pour la réponse !

    Il faut modifier la Font dans l'éditeur également.
    aurais-tu un petit exemple ? je me suis complètement paumé dans les cellEditor, cellRenderer, etc. sans arriver à rien...

  4. #4
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Victoire
    J'ai réussi en créant une nouvelle classe :
    exemple dans http://www.exampledepot.com/egs/java.../CustEdit.html

    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
     
    public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor {                                              
        JComponent component = new JTextField();
        static Font laFonte = null;
        static int laTaille = 0;
     
        static public void setFont(Font tableFonte) {
            laFonte = tableFonte;
        }      
        static public void setTaille(int i) {
            laTaille = i; 
        }                                     // méthode appelée quand une cellule est éditée
        public Component getTableCellEditorComponent(JTable table, Object value,
                    boolean isSelected, int rowIndex, int vColIndex) {                 
                                                           // ajuster la taille de la police
            ((JTextField)component).setFont(laFonte.deriveFont( (float)laTaille ));
                   // 'value' est la valeur de la cellule à l'emplacement (rowIndex, vColIndex) 
            ((JTextField)component).setText((String)value);    
                                                      // Return the configured component
            return component;
        }       // méthode appelée à la fin de l'édition, retourne la nouvelle valeur de la cellule
        public Object getCellEditorValue() {
            return ((JTextField)component).getText();
        }       
    }
    est-ce la bonne façon, ou si on peut faire plus simple ?

    merci dinobogan pour ton aide !

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Inutile d'utiliser du static. Et évite aussi de modifier la fonte à chaque appel de "getTableCellEditorComponent", ça permet de gagner un tout petit peu de temps :

    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
     
    public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor
    {
      private JTextField component = new JTextField();
      private Font laFonte = null;
     
      public MyTableCellEditor()
      {
        laFonte = component.getFont();
      }
     
      public void setFont( Font tableFonte )
      {
          laFonte = tableFonte;
      }      
     
      public void setTaille( int taille )
      {
        component.setFont( laFonte.deriveFont( (float)taille ) );
      }
     
      public Component getTableCellEditorComponent( JTable table, Object value,
                    boolean isSelected, int rowIndex, int vColIndex )
      {
        component.setText( (String)value );
        return component;
      }
     
      public Object getCellEditorValue()
      {
        return component.getText();
      }       
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Merci (bis) !

    ah, ben, j'en apprends des choses, moi, sur ce forum!
    dernière chose, j'applique la modif sur une des colonnes de ma table comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         MyTableCellEditor mtce = new MyTableCellEditor();  
         mtce.setFont(jXTable1.getFont());
         mtce.setTaille(tailleDemandee);  
         int vColIndex = 0;
         TableColumn col = jXTable1.getColumnModel().getColumn(vColIndex);
         col.setCellEditor(mtce);
    j'espérais l'appliquer à toute la table avec jXTable1.setCellEditor(mtce); mais ça ne fait rien sur aucune cellule;
    heureusement (merci google) j'ai trouvé le moyen de le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jXTable1.setDefaultEditor(Object.class, mtce);

    ça marche... bizarre, non ?

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

Discussions similaires

  1. changer la taille de la police de certains mots
    Par bateau_a_voile dans le forum VBA Word
    Réponses: 17
    Dernier message: 04/06/2007, 15h34
  2. [VBA-W] changer la taille de la police d'un signet
    Par dev81 dans le forum VBA Word
    Réponses: 6
    Dernier message: 25/04/2007, 09h46
  3. changer la taille de la police
    Par titouf71 dans le forum MFC
    Réponses: 18
    Dernier message: 28/08/2006, 16h36
  4. [J2ME] changer la taille de la police
    Par clementv dans le forum Java ME
    Réponses: 2
    Dernier message: 14/06/2006, 18h59
  5. Changer la taille d'une police SDL_ttf.
    Par Kerwando dans le forum SDL
    Réponses: 4
    Dernier message: 06/06/2006, 12h10

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