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)

(私の AddFont ファイルの 11 行目はこれです -

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

私のメインフレームの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 に答える