1

大きな三角形を描く小さな JFrame を作成しています。三角形のすべての辺にラベルが必要です。三角形の形状が不規則であるため、これらのラベルを自分で配置する必要があります (そうです、直角でない三角形もあります)。(JFrame で setResizable(false) を指定したので、複数のサイズは必要ありません。)

レイアウト マネージャーを使用して、すべてのラベルの場所を手動で設定する方法はありますか?

プログラム設計

4

2 に答える 2

2

中央にキャンバスを配置し、4 つの側面のいずれかにラベルを付けたい場合は、次のBorderLayoutようにa を使用できます。

JPanel framePanel = new JPanel(new BorderLayout());

JPanel triangleCanvas = ...
framePanel.add(triangleCanvas, BorderLayout.CENTER);

JPanel northLabels = ...
framePanel.add(northLabels, BorderLayout.PAGE_START);

JPanel southLabels = ...
framePanel.add(southLabels, BorderLayout.PAGE_END);

JPanel eastLabels = ...
framePanel.add(eastLabels, BorderLayout.LINE_END);

JPanel westLabels = ...
framePanel.add(westLabels, BorderLayout.LINE_START);

frame.getContentPane().add(framePanel);

注意が必要なのは、現在描画されている三角形 (またはコンテナー内にあるもの) に応じてラベルの位置を調整したい場合ですが、そうしたくないことを願っています。

于 2011-12-16T23:23:05.323 に答える
1

あなたは不規則な場所、例えば角や側面にラベルを描きたいと言います。次にdrawString(String s, int x, int y)、Graphics2DAPIで使用することをお勧めします。したがって、ラベルを配置して、図を描くときに描画します。

フォントやフォントメトリックなどのより高度なオプションについては、レッスン:テキストAPIの操作を参照してください。

ラベルの正確な位置を指定する場合は、レイアウトマネージャーを使用しない場合のみです。

于 2011-12-17T10:08:41.077 に答える