1

最近、Swing を使用してデスクトップ アプリケーション「ホテル管理システム」を開発しましたが、うまく機能しています。

しかし今、最新の要件は、アプリケーションがテルグ語フォントでなければならないということです! つまり、アプリケーションの GUI はテルグ語で、請求書とレポート、およびアプリケーション内のすべてのものはテルグ語である必要があります。

だから私の質問は、これは可能ですか?もしそうなら、それを実現するためにスイングと一緒にどのようなテクノロジーを使用する必要がありますか?
Swing と共に何か新しいものを適用する必要がある場合は、それを学び、自分のアプリケーションで使用したいと思っています。

私を助けてください。どうすればこれができるのかわかりません。

4

2 に答える 2

1

準備ができている限り、デフォルトのフォントを変更することは特に難しいことではありません。

フォントをJasperReportsにバンドルする方法については、JasperReportsのカスタムフォントをご覧ください。また、最新の情報については、公式のドキュメントやフォーラムで確認することをお勧めします。

ウェブ上にはたくさんの例があります。「JasperReportsカスタムフォント」をGoogleで検索してください。

Swingに必要なフォントを設定することは難しくありませんが、使用するルックアンドフィールがそのプロパティをどのように保存するかに大きく依存します。

フォントがシステムにインストールされているかどうか、またはフォントを埋め込みリソースとして提供しているかどうかに応じて、次のことを行う必要がある場合とない場合があります。

システムにインストールされているフォントに依存していないが、自分でフォントを提供している場合は、フォントをロードする必要があります。

// Load the font, for example "Telugu.ttf"
String fName = "/fonts/" + name;
InputStream is = null;
try {
    InputStream is = DemoFonts.class.getResourceAsStream(fName);
    font = Font.createFont(Font.TRUETYPE_FONT, is);
} finally {
    try {
        is.close();
    } catch (Exception exp) {
    }
}

それ以外の場合は、必要なフォントファミリ名Fontを使用してオブジェクトを簡単に作成できるはずです。Telugu

次に、現在のルックアンドフィールで使用されているデフォルトのフォントを、使用したいフォントに変更します。これは、ルックアンドフィールをインストールした後、およびUI要素を作成する前に行う必要があります。

Object[] keys = keySet.toArray(new Object[keySet.size()]);

for (Object key : keys) {

    if (key != null && key.toString().toLowerCase().contains("font")) {

        Object oValue = UIManager.getDefaults().get(key);

        if (oValue != null) {

            String value = oValue == null ? null : UIManager.getDefaults().get(key).toString();
            UIManager.put(key, font);

        }

    }

}

ここで、Swingはルックアンドフィールでデフォルトで固定幅フォントを使用する傾向があることに注意する必要があります。フォントを可変幅フォントに変更すると、レイアウトが変更されます。

于 2013-03-01T11:50:58.477 に答える