2

我通常尽量不问我以前见过的问题,但这是不同的。我一直在尝试让我的自定义字体工作,但每当我尝试在方法中使用它时,我都会收到错误“无法对非静态方法进行静态引用”。我知道这意味着什么,但我不知道如何解决它。这是示例 -

import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.io.InputStream;

public class AddFont extends MainFrame{
public void createFont() throws Exception {

InputStream telegraficoFontAdd = AddFont.class.getResourceAsStream(FONT_PATH_TELEGRAFICO);
    Font telegraficoFont = Font.createFont(Font.TRUETYPE_FONT,telegraficoFontAdd);
    telegraficoFont = telegraficoFont.deriveFont(Font.PLAIN,20);
    GraphicsEnvironment ge =
        GraphicsEnvironment.getLocalGraphicsEnvironment();
    ge.registerFont(telegraficoFont);
    }
}

那是我的 AddFont 类文件,这是我的 MainFrame 的片段 -

      public static void main(String[] args) {
  javax.swing.SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        try {
            AddFont addFont = new AddFont();
            addFont.createFont();
        } catch (Exception e) {
            e.printStackTrace();
        }
        createGUI();

     } //public void run() Closing
  });
}

我如何找到在静态对象中使用方法类的方法,因为我有一长串需要更改字体的按钮?还是有一些我必须做的解决方法?

和往常一样,如果您对此表示反对,请告诉我原因,以便我知道如何改进。希望这被认为是SSCCE。

编辑 - 在我的 MainFrame 中更改了我的主要方法,现在我收到错误 -

java.io.IOException: Problem reading font data.
at java.awt.Font.createFont(Unknown Source)
at AddFont.createFont(AddFont.java:11)
at MainFrame$1.run(MainFrame.java:107)

(我的 AddFont 文件中的第 11 行是这样的 -

  Font telegraficoFont = Font.createFont(Font.TRUETYPE_FONT,telegraficoFontAdd);

我的 MainFrame 的第 107 行是

 addFont.createFont();
4

1 回答 1

1

public void createFont()如果您打算使用您的Class姓名调用您的函数,则此函数需要是静态的。

做了public static void createFont()

如果您不想使用,static那么只需创建Object您的类,然后调用如下:

AddFont addFont = new AddFont();
addFont.createFont();
于 2013-05-18T04:54:12.227 回答