使用可用字体列表填充组合框Java

时间:2014-03-01 19:36:06

标签: java swing list fonts jcombobox

如何使用GraphicsEnvironment.getAllFonts()方法填充包含所有可用字体列表的组合框?


我用过

JComboBox font = new 
    JComboBox(GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts());

但这不起作用。

1 个答案:

答案 0 :(得分:2)

关于,

  

我使用了JComboBox font = new JComboBox(GraphicsEnvironment.getLocalGraphicsEnvironment()。getAllFonts());
  这没用。

确实有效。但您必须设置列表单元格渲染器以显示字体名称。例如,

GraphicsEnvironment graphEnviron = 
       GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] allFonts = graphEnviron.getAllFonts();

JComboBox<Font> fontBox = new JComboBox<>(allFonts);
fontBox.setRenderer(new DefaultListCellRenderer() {
   @Override
   public Component getListCellRendererComponent(JList<?> list,
         Object value, int index, boolean isSelected, boolean cellHasFocus) {
      if (value != null) {
         Font font = (Font) value;
         value = font.getName();
      }
      return super.getListCellRendererComponent(list, value, index,
            isSelected, cellHasFocus);
   }
});
JOptionPane.showMessageDialog(null, new JScrollPane(fontBox));

combo box tutorial中已经很好地描述了这一点。