2017-10-05 27 views
0

JFrameにはJTextAreaが入っています。Javaフォントのサイズを取得

Font font = new Font("monospaced", Font.PLAIN, 14); 
textarea.setFont(font); 

フォントがモノスペースであるため、すべての文字は同じ幅と高さです。

この幅と高さがピクセル単位でわかります。

この場合、私はfont.getStringBoundsを使うことができましたが、それに渡す文脈はGraphicsです。 frame.getGraphics()nullを返します。

文字のサイズはどのようにして確認できますか? Graphicsインスタンスなしで実行できますか?私はとにかくそのインスタンスを望んでいません。私は自分のキャラクターの大きさを知りたいだけです。

+0

ご質問の推奨サイズに影響を与えますサイズに

これを好んだことは、明らかではないが、あなたは、コードのヌル一部でより多くの情報を提供することができます。 –

+0

"size"というフォントは、レンダリング先のコンテキストに基づいています。一般的に 'Graphics#getFontMetrics'やそのような関連するメソッドを見たいと思っています。使用可能な 'Graphics'コンテキストがない場合は、' BufferedImage'を作成し、それを使用することができます。それでは、なぜこの情報が欲しいのですか? – MadProgrammer

+0

@MadProgrammerありがとう - 私は 'BufferedImage'を調べます。参考までに、私は 'JFrame' /' JTextarea'を使ってテキストベースのゲームをレンダリングしていますので、この情報を使ってテキストを拡大し、ウィンドウのサイズを文字単位で取得します。 – Lolums

答えて

1

JFrame#getFontMetricsは、JFrameのスーパークラスの1つがComponentであるため使用できます。これが機能しない場合

、あなたもGraphicsオブジェクトを取得するためにBufferedImageを使用することができます。

BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); 

あなたはGraphicsのインスタンスを取得するためにimageオブジェクトを使用することができます。

+0

いいえ私はJFrameについて話しています#getFontMetrics Graphics#getFontMetrics – Dinh

+0

私の答えが間違っていると思うので、Graphicsオブジェクトを取得する別の方法を追加しました – Dinh

+0

ああ、私の悪い!そうです、それはうまくいくようです。 – Lolums

1

ちなみに、私はテキストベースのゲームをレンダリングするためのJFrame/JTextAreaのを使用していますので、私はテキストをスケーリングし、文字

単位でウィンドウのサイズを取得するために、この情報を使用しますそれはあなたが、その後LayoutManagerのAPIを利用し、単純にpackを呼び出すことができ、自動的に

単にそれが望ましいですサイズに関する決定を行うために、フォントベースの情報を使用しますJTextArea#setColumnsJTextArea#setRowsを使う方が良いでしょう、おそらく最善のアプローチではありませんそのそれに基づいてコンテンツの周りのウィンドウを、パックするJFrameJScrollPane

+0

Aha私はsetRowsとsetColsを使ってみましたが、残念ながら効果はありませんでした。 – Lolums

+0

*「setRowsとsetColを使用しようとしましたが、残念ながら効果がありませんでした」*それ以外の何かが間違っていて、それを調べて解決する必要があります。 –

+0

@Lolums私はこのテクニックを何度も使ってきましたが、それはうまくいきます。アンドリューが言うように、うまくいかない場合は、あなたがやっていることが原因です – MadProgrammer

関連する問題