Java 图纸+所需的空布局;标签

Java 图纸+所需的空布局;标签,java,swing,user-interface,layout-manager,null-layout-manager,Java,Swing,User Interface,Layout Manager,Null Layout Manager,我正在做一个小的JFrame,在其中我画了一个大三角形。在三角形的所有边上都必须有一个标签。我必须自己定位这些标签,因为三角形的形状不规则(是的,也会有一个非直角三角形)。(我在JFrame上指定了setResizeable(false),因此不需要多个大小。) 有没有办法使用布局管理器手动设置所有标签的位置 < P>如果你想在中间画一个画布,然后在4个边上的任何一个上加标签,你可以使用边界布局< /代码>,比如: JPanel framePanel = new JPanel(new Bord

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

有没有办法使用布局管理器手动设置所有标签的位置


< P>如果你想在中间画一个画布,然后在4个边上的任何一个上加标签,你可以使用<代码>边界布局< /代码>,比如:

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);
如果您想根据当前绘制的三角形(或容器中的任何内容)以某种方式对齐标签的位置,则需要技巧,但希望您不想这样做


    • 你说你想在不规则的地方画标签,例如在墙角和侧面。然后我建议在Graphics2D API中使用
      drawString(strings,intx,inty)
      。因此,放置标签并在绘制图形时绘制

      有关字体和字体度量等更高级的选项,请参阅


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

      是否希望标签位于不规则的位置,例如形状的角部?将
      JLabel
      实例渲染为
      BufferedImage
      ,可能是更好的策略,然后在最适合的位置将BI绘制到
      图形
      对象。请参阅详情。@乔纳斯:是的,也在每一边。它将永远是一个三角形,但不总是规则的。我确实想这样做,这是我的问题。我知道BorderLayout,但是会有更多的不规则三角形。drawString(…)方法是个好主意。我会用你的答案,谢谢!