2011-12-15 8 views
2

私のアプリケーションに漢字を表示する必要があります。 Verdanaフォントを使用します。 ラベル(JLabel)はフォントを使用してこれらの文字を正しく表示しますが、テキストボタン(JButton)は文字の代わりに四角形を表示します。verdanaフォントのボタンのJava中国語文字

+3

VerdanaはCJKをサポートしていません。システムは、別のフォントからグリフを選択します。これは、使用しているコントロールに関係なく*動作しているはずのメカニズムです。 – Joey

+0

Verdana TTFフォントは中国語文字をサポートしていません!私は、OPが誤って彼がラベル上で作業していると思うフォントをVerdanaフォントと仮定していると思われる。私はそうは思わない。実際に彼が見るフォントは、デフォルトのJava論理フォントDialogフォントである可能性があります。私は彼がVerdanaフォントでラベルの 'setFont()'を正しく設定しなかったと思います。 – ecle

+0

getFont()はVerdanaを返します – user954469

答えて

2

はこれを試してみてください。

jLabel.setFont(new java.awt.Font("MS Song", 0, 12)); 
+0

外国語で作業している開発者にとっては、文字セットが通常はまったく問題になることはほとんどありません。 – Joey

+1

実際には、正方形は実際にフォントの問題であり、それをMS Songに変更することは成功する大きなチャンスです。 JButtonが動作しない理由を伝えるために結果に影響を与える可能性のあるものが多すぎるため、JLabelは機能しません。たとえば、JButton用に異なるフラグを持つWin APIを呼び出す場合。または、ボタンが太字のフォントを使用しています。 Windows版、Uniscribe版。多分フォントは実際には同じではありません(間違いが起こります)。しかし、正方形(通常)は、悪いフォントを意味します。また、明示的に中国語フォントを選択することで、不正な符号化の疑いがなくなります。だから、この答えは解決策への良い一歩です。 –

+0

私のコメントを参照してください。私はこの問題を調査して、それが私の疑いに合っています... – ecle

2

それは、あなたがこの例のようにUnicodeとして中国語の文字を入力する必要がある場合があります:hereから得られる

JLabel chineseJLabel = new JLabel("\u6B22\u8FCE\u4F7F\u7528" + "\u0020\u0020Unicode\u0021"); 
chineseJLabel.setToolTipText("This is Traditional Chinese"); 

。文字列をUnicodeに変換するには、Native2Asciiを使用します。

+0

私のソースコードは、UTF-16文字セットでエンコードされています。 – user954469

+0

、それはなぜラベルと完全に機能しますか?私は同じ文字列を使用します。 – user954469

+0

外国語を扱う開発者にとっては、文字セットが通常はまったく問題になることはほとんどありません。 – Joey