【发布时间】:2013-05-13 07:28:20
【问题描述】:
我通常尽量不问我以前见过的问题,但这次不同。我一直试图让我的自定义字体工作,但每当我尝试在方法中使用它时,我都会收到错误“无法对非静态方法进行静态引用”。我知道这意味着什么,但我不知道如何解决它。这是示例-
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 的 sn-p -
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();
【问题讨论】:
-
“希望这被认为是一个 SSCCE。” 一个 SSCCE 是一个源文件,而不是一个源文件和一个代码 sn-p。既然我在这里.. 1) 对代码块使用一致且合乎逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。 2) 源代码中永远不需要超过一行空白。
-
AddFont.createFont(); -
致 Ravi Tridedi,我知道问题出在哪里。但我的主要方法是静态的。我想知道是否有一种方法可以更改字体类以使用静态方法,而无需更改我的所有方法/类。对于 Andrew Thompson,我将尝试编辑我的帖子,使其只有一个文件,而不是 2。createGUI() 下的两个空白点赞;我从来没有编辑过是偶然的,对不起。
-
@Hathor,为您的班级创建一个
Object,然后调用方法createFont()。查看答案。 -
@RaviTrivedi 我对我的主要帖子进行了编辑,您可以看看我的问题吗?