Я пишу код для заполнения java.awt.GridBagLayout «строками» элементов управления.Для каждой строки у меня есть вызов метода в форме
(.add panel CONTROL (fill-gbc 0 INDEX ...))
, где CONTROL - это элемент управления Swing для размещения в этой строке (т.е.: (JLabel. "Hello")
), а INDEX - gridy
для этого элемента управления (fill-gbc
заполняет один изменяемый объект GridBagContraints
и возвращает его - он принимает необязательные параметры ключевых слов для gridwidth
, gridheight
и т. Д.)
Я хотел бы создать вектор изсодержимое строки (вызовы (.add panel ...)
) и использование (map-indexed ...)
для заполнения значения INDEX.
Единственный способ, которым я могу придумать, - это сделать каждый (.add panel ...)
анонимной функциейодин параметр (индекс):
(dorun (map-indexed #(%2 %1)
[#(.add panel (.JLabel "Hello") (fill-gbc 0 %)) ...]))
Есть ли лучший способ сделать это, возможно, с помощью макроса (мне понадобится этот шаблон несколько раз в моем приложении для различных диалоговых окон)?