0

プライベートを含むクラスがLabel = new Label("");あり、いくつかのメソッドで次のように記述した場合:

private void setText(String text)
{
    this.label.setText(text);
    System.out.println("label size = " + this.label.getSize(0,0));
}

常に「ラベル サイズ = Dimension(0,0)」と出力されます。どうしてこれなの?テキストを設定した後、ラベルが占めるサイズを取得するにはどうすればよいですか? 私は他の解決策も試しました(hereおよびメソッド getTextBounds() で提案されているようにhere)が、それぞれ Dimension(0,0) または NullPointerException を再度取得します。

何か提案はありますか?ありがとう:)

4

1 に答える 1

1

this.label.getPreferredSize()あなたが探しているものです。ラベルが占有したいスペースを返します。しかし、この時点では、ラベルは使用するフォントをまだ認識していないため、NullPointerException. Figure ツリーがFigureCanvasフォントのコンテンツなどとして設定されると、利用できるようになります。または、 を呼び出す前にフォントを明示的に設定することもできますgetPreferredSize()

コメントでリクエストしたように、ラベルの周りに角丸長方形を追加するには、次のようにします。

RoundedRectangle rr = new RoundedRectangle();
rr.setBorder(new MarginBorder(4));
rr.setLayoutManager(new StackLayout());
rr.add(new Label("label text"));
于 2011-12-01T13:22:40.720 に答える