2017-08-21 4 views
0

Lors de l'exécution de mon programme Java sur une haute résolution 4K écran La police des noms de dossier dans le JFileChooser semble minuscule, comme il apparaît ici:Java - Comment puis-je augmenter la police des noms de dossier dans JFileChooser?

enter image description here

Je suis en train de trouver un moyen d'augmenter le dossier/taille de police de nom de fichier seulement dans le JFileChooser. L'idée actuelle est de créer un JFileChooser personnalisé, de faire une boucle sur ses éléments et d'essayer d'augmenter la police des noms de dossiers. Je pensais augmenter la police du FilePane, mais cela ne fonctionne pas. Rien ne se passe. Voici mon code:

public class JFileChooserCustom extends JFileChooser { 
    public JFileChooserCustom() { 
     setFileChooserFont(this.getComponents()); 
    } 

    public void setFileChooserFont(Component[] comp) { 
     for(int x = 0; x < comp.length; x++) { 
      // System.out.println(comp[x].toString()); // Trying to know the type of each element in the JFileChooser. 
      if(comp[x] instanceof Container) setFileChooserFont(((Container)comp[x]).getComponents()); 

      try{ 
       if(comp[x] instanceof FilePane) comp[x].setFont(comp[x].getFont().deriveFont(comp[x].getFont().getSize() * 2f)); 
      } 
      catch(Exception e){}//do nothing 
     } 
    } 
} 

J'espère que quelqu'un pourrait m'aider avec ceci.

+0

Voir aussi [GUI du navigateur de fichiers] (http://codereview.stackexchange.com/q/4446/7784) - au cas où vous décidiez d'abandonner 'JFileChooser' et de le remplacer. –

+0

@Andrew Thompson ... Merci, mais il semble très avancé. Je n'ai pas besoin d'un tel sélecteur sophistiqué :) – Brad

Répondre

1

Ne fonctionne pas avec FilePane, utilisez plutôt JList et JTable (ces composants sont utilisés par FilePane pour présenter la liste de fichiers).

import java.awt.Component; 
import java.awt.Container; 

import javax.swing.JFileChooser; 
import javax.swing.JList; 
import javax.swing.JTable; 
import javax.swing.SwingUtilities; 

/** 
* <code>IncreaseFileChooserFont</code>. 
*/ 
public class IncreaseFileChooserFont { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       JFileChooser chooser = new JFileChooser(); 
       setFileChooserFont(chooser.getComponents()); 
       chooser.showOpenDialog(null); 
       System.exit(0); 
      } 
     }); 
    } 

    public static void setFileChooserFont(Component[] comp) { 
     for (int x = 0; x < comp.length; x++) { 
      // System.out.println(comp[x].toString()); // Trying to know the type of each element in the JFileChooser. 
      if (comp[x] instanceof Container) 
       setFileChooserFont(((Container) comp[x]).getComponents()); 

      try { 
       if (comp[x] instanceof JList || comp[x] instanceof JTable) 
        comp[x].setFont(comp[x].getFont().deriveFont(comp[x].getFont().getSize() * 2f)); 
      } catch (Exception e) { 
      } // do nothing 
     } 
    } 
} 
0

Vous pouvez le faire en définissant individuellement la police de chaque composant de JFilechooser.

// Inside method where you are preparing your JFilechooser: 
JFileChooser fc = new JFileChooser("."); 
setFileChooserFont(fc.getComponents()); 

public void setFileChooserFont(Component[] comp) 
{ 
    for(int x = 0; x < comp.length; x++) 
    { 
     if(comp[x] instanceof Container) setFileChooserFont(((Container)comp[x]).getComponents()); 
     try{comp[x].setFont(font);} 
     catch(Exception e){}//do nothing 
    } 
} 

Espérons que cela aidera. :-)