Java - 如何增加 JFileChooser 中文件夹名称的字体?

Java - How can i increase the font of the folder names in JFileChooser?

当 运行 我的 Java 程序在高分辨率 4k 屏幕上时,JFileChooser 中文件夹名称的字体显得很小,如下所示:

我试图找到一种方法来仅在 JFileChooser 中增加 folder/file 名称字体大小。我目前的想法是创建一个自定义 JFileChooser,在其元素上循环并尝试增加文件夹名称的字体。我想我会增加 FilePane 的字体,但它不起作用。什么都没发生。这是我的代码:

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
        }
    }
}

我希望有人能帮助我。

不要使用 FilePane,而是使用 JList 和 JTable(FilePane 使用这些组件来呈现文件列表)。

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
        }
    }
}

您可以通过单独设置 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
    }
}

希望这会有所帮助。 :-)