我正在制作一个小的 JFrame,在其中绘制一个大三角形。在三角形的所有边上都必须有一个标签。我必须自己定位这些标签,因为三角形的形状不规则(是的,也会有一个非直角三角形)。(我在我的 JFrame 上指定了 setResizable(false),所以不需要多个尺寸。)
有没有办法通过布局管理器手动设置我所有标签的位置?
我正在制作一个小的 JFrame,在其中绘制一个大三角形。在三角形的所有边上都必须有一个标签。我必须自己定位这些标签,因为三角形的形状不规则(是的,也会有一个非直角三角形)。(我在我的 JFrame 上指定了 setResizable(false),所以不需要多个尺寸。)
有没有办法通过布局管理器手动设置我所有标签的位置?
如果您想在中间有一个画布,然后在 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);
棘手的部分是如果您想根据当前绘制的三角形(或容器中的任何内容)以某种方式对齐标签的位置,但希望您不想这样做。
你说你想在不规则的地方绘制标签,例如在角落和侧面。然后我建议drawString(String s, int x, int y)
在 Graphics2D API 中使用。因此,在绘制图形时放置标签并绘制。
请参阅课程:使用文本 API了解更高级的选项,例如字体和字体度量。
当您想指定标签的确切位置时,是唯一不应该使用布局管理器的情况。