必需的null布局,用于绘制+标签

时间:2011-12-16 21:32:09

标签: java swing user-interface layout-manager null-layout-manager

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

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

Program design

2 个答案:

答案 0 :(得分:2)

如果你想在中间画一个画布,然后在4个边中的任何一个上标签,你可以使用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);

如果你想以某种方式对齐你的标签取决于当前绘制的三角形(或容器中的任何东西),那么棘手的部分就是如此,但希望你不想这样做。

答案 1 :(得分:1)

你说你想在不规则的地方画标签,例如在角落和两侧的dhapes。然后我建议在Graphics2D API中使用drawString(String s, int x, int y)。因此,在绘制图形时放置标签并绘制。

有关更多高级选项,请参阅Lesson: Working with Text APIs,例如字体和字体指标。

如果要指定标签的确切位置,则是不应使用布局管理器的唯一情况。