2009-05-21 3 views
0

私のアプリでは、長めのラベルがあります。中国語ではラベルがオーバーフローし、他のコンポーネントも押し出します。これは中国語OSでのみ観察されています。オーバーフローするコンポーネントを検出して処理するにはどうすればよいですか?スイングでオーバーフローするコンポーネントを扱う

答えて

0

これは、ウィンドウサイズと言語によっては、これが問題であると推測しています。あなたができるテキストが長い超えて

// get metrics from the graphics 
FontMetrics metrics = graphics.getFontMetrics(font); 
// get the height of a line of text in this font and render context 
int hgt = metrics.getHeight(); 
// get the advance of my text in this font and render context 
int adv = metrics.stringWidth(text); 

場合(あなたは、帽子から撤退しなければならない):

はたぶん、あなたは望んでいないものを、しかし、あなたは、このようなテキストのサイズを確認することができますそれがわかっている場合は切り捨て、場合によっては省略することもできますし、アイコンで置き換えて、ツールチップを使用してフルテキストを表示することもできます。

+0

これは私の目的にとって最適な解決策です。 1つのラベルがあふれていますが、タイトルボーダーもあふれています。したがって、myComponent.getFontMetrics(フォント)を使用して、特定の長さ以上の場合はツールチップを挿入するとうまくいきますが、理想的ではありません。 –

1

JComponentにはsetMaximumSizeメソッドがあります。使用しているLayoutManagerによっては、結果が異なる場合があります。レイアウトレベルでこのような制約を設定するには、SpringLayoutをチェックしてください。

0

JTextAreaは余分なコードを付けたラベルのように動作させることができますが、省略記号(...)で省略するのではなく、必要に応じて行の上にテキストを折り返します。ラッピングを考慮してUIをデザインします。

JTextArea label = new JTextArea(); 
label.setText(text); 
label.setWrapStyleWord(true); 
label.setLineWrap(true); 
label.setEnabled(false); 
label.setOpaque(false); 
関連する問題