1

我正在制作一个小的 JFrame,在其中绘制一个大三角形。在三角形的所有边上都必须有一个标签。我必须自己定位这些标签,因为三角形的形状不规则(是的,也会有一个非直角三角形)。(我在我的 JFrame 上指定了 setResizable(false),所以不需要多个尺寸。)

有没有办法通过布局管理器手动设置我所有标签的位置?

程序设计

4

2 回答 2

2

如果您想在中间有一个画布,然后在 4 个侧面中的任何一个上添加标签,您可以使用 a BorderLayout,如下所示:

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)在 Graphics2D API 中使用。因此,在绘制图形时放置标签并绘制。

请参阅课程:使用文本 API了解更高级的选项,例如字体和字体度量。

当您想指定标签的确切位置时,是唯一不应该使用布局管理器的情况。

于 2011-12-17T10:08:41.077 回答