Java Swing Gridlayout: Доступ к определенной координате - PullRequest
2 голосов
/ 06 декабря 2011

Я создаю Java Swing GUI и отформатировал JPanel для использования GridLayout.Мне нужно получить доступ к определенному «ящику» (то есть определенной координате) сетки, но я не могу найти способ сделать это.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Вы не должны зависеть от кода GUI (представление), чтобы предоставить вам информацию о данных программы (модель).Лучшим решением было бы «знать», какой компонент находится с самого начала - может быть, у вас должна быть структура данных (2D-массив?), Которая содержит компоненты и обновляется всякий раз, когда что-то добавляется в сетку.

Если вы хотите быстрое и очень грязное исправление, вы можете начать играть в игры с JPanel.getComponentAt().Тем не менее, для этого требуются пиксельные координаты, поэтому вам необходимо выполнить обратный инжиниринг, чтобы выяснить, сколько места занимает данный квадрат сетки.Пространство между квадратами сетки задается вашим GridLayout объектом .Это не рекомендуется что бы то ни было.Я просто включил это в интересах полноты (и поскольку это более буквальный ответ на ваш вопрос).

1 голос
/ 06 декабря 2011

In GridLayout, «Контейнер разделен на прямоугольники одинакового размера».Вы можете добавить пустой, прозрачный компонент в тех местах, где вы хотите казаться пустыми, например, new JLabel("").См. Также GridBagLayout и Использование менеджеров по расположению .

...