Требуется нулевой макет, для рисования + метки - PullRequest
1 голос
/ 17 декабря 2011

Я делаю маленький JFrame, в котором я рисую большой треугольник. На всех сторонах треугольника должна быть метка. Я должен сам расположить эти метки из-за неправильной формы треугольника (да, там также будет прямоугольник с неправильными углами). (Я указал setResizable (false) на моем JFrame, поэтому нет необходимости в нескольких размерах.)

Можно ли каким-либо образом вручную установить местоположение всех моих ярлыков, С помощью менеджера по расположению?

Program design

Ответы [ 2 ]

2 голосов
/ 17 декабря 2011

Если вы хотите, чтобы холст находился посередине, а затем имел метки на любой из 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 голос
/ 17 декабря 2011

Вы говорите, что хотите нарисовать метки в нерегулярных местах, например, в углах и на боковых сторонах.Тогда я бы рекомендовал использовать drawString(String s, int x, int y) в Graphics2D API.Поэтому разместите надписи и нарисуйте их тогда, когда будете рисовать фигуру.

См. Урок: Работа с текстовыми API-интерфейсами для более сложных параметров, таких как шрифты и метрики шрифта.Вы хотите указать точное положение надписей, это единственный случай, когда вам не следует использовать Layout Manager.

...