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類文件,這裏是我的大型機片段 -
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。
編輯 - 改變了我的主要方法,在我的主機,現在我得到的錯誤 -
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)
(11號線在我的AddFont文件是這樣的 -
Font telegraficoFont = Font.createFont(Font.TRUETYPE_FONT,telegraficoFontAdd);
和我的主機107線是
addFont.createFont();
*「希望這被認爲是一個SSCCE」 *一個SSCCE是一個源文件,而不是一個源文件和一個代碼片段。因爲我在這裏.. 1)使用一致的邏輯縮進代碼塊。代碼的縮進旨在幫助人們理解程序流程。 2)源代碼中絕不需要空白的一行空格。 –
'AddFont.createFont();'< - 您正在對非靜態方法進行靜態引用。解決這個問題和你的g2g。 – Perception
對於Ravi Tridedi,我知道問題出在哪裏。但我的主要方法是靜態的。我想知道是否有方法可以改變字體類來使用靜態方法,而不必更改所有的方法/類。 對安德魯湯普森,我會嘗試編輯我的文章,所以它只是一個文件,而不是2. createGUI()下的兩個空白喜歡;我從來沒有編輯過是偶然的,對不起。 – Hathor