2014-01-10 1 views
1

Я пытаюсь установить обычай Font за титул в JFreeChart с кодом:Пользовательского JFreeChart название шрифт слишком мал

InputStream is = new FileInputStream("test.ttf"); 
    java.awt.Font customFont = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, is); 
    customFont.deriveFont(24f); 
    chart.getTitle().setFont(customFont); 

заканчивается с очень маленьким названием шрифта (почти невидимым):

enter image description here

Любые идеи, как добавить обычай FontJFreeChart в названии?

public class Function2DDemo1 extends ApplicationFrame { 

    public Function2DDemo1(String title) { 
     super(title); 
     JPanel chartPanel = createDemoPanel(); 
     chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); 
     setContentPane(chartPanel); 
    } 

    private static JFreeChart createChart(XYDataset dataset) { 
     // create the chart... 
     JFreeChart chart = ChartFactory.createXYLineChart("Function2DDemo1 ", // chart 
                       // title 
     "X", // x axis label 
     "Y", // y axis label 
     dataset, // data 
     PlotOrientation.VERTICAL, true, // include legend 
     true, // tooltips 
     false // urls 
     ); 

     // SET A CUSTOM TITLE FONT 
     try { 
      InputStream is = new FileInputStream("test.ttf"); 
      java.awt.Font customFont = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, is); 
      customFont.deriveFont(24f); 
      chart.getTitle().setFont(customFont); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (FontFormatException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     XYPlot plot = (XYPlot) chart.getPlot(); 
     plot.getDomainAxis().setLowerMargin(0.0); 
     plot.getDomainAxis().setUpperMargin(0.0); 
     return chart; 
    } 

    public static XYDataset createDataset() { 
     XYDataset result = DatasetUtilities.sampleFunction2D(new X2(), -4.0, 4.0, 40, "f(x)"); 
     return result; 
    } 

    public static JPanel createDemoPanel() { 
     JFreeChart chart = createChart(createDataset()); 
     return new ChartPanel(chart); 
    } 

    static class X2 implements Function2D { 

     public double getValue(double x) { 
      return x * x + 2; 
     } 

    } 

    public static void main(String[] args) { 
     Function2DDemo1 demo = new Function2DDemo1("JFreeChart: Function2DDemo1.java"); 
     demo.pack(); 
     RefineryUtilities.centerFrameOnScreen(demo); 
     demo.setVisible(true); 
    } 
} 
+0

Благодарим вас за предоставление SSCCE. Это делает так легко! :-) –

ответ

1

Метод deriveFont возвращает Font объект, который вы забыли сохранить. Изменение кода:

customFont = customFont.deriveFont(24f); 

Я тестировал код, с этим исправлением, используя бесплатный шрифт от http://www.urbanfonts.com и, кажется, работает нормально (на Windows). Я предполагаю, что при загрузке файла шрифта размер по умолчанию равен 1.

+0

Aha! Это объясняет размер. Но затем следующий вопрос: почему мой пользовательский шрифт не отображается? – Grains

+0

Я предполагаю, что проблема с шрифтом - это другой вопрос. Угадайте, я задаю новый вопрос об этом. – Grains

+0

@Grains Ну ... дайте ему мгновение. Я обдумываю. Вам нужно найти файл шрифта для воспроизведения. Я не оценил множество проблем - извинения за неправильное изменение заголовка. –

Смежные вопросы