Исходя из LISP У меня самые сложные моменты при доступе к Java-объектам.Я пытаюсь поставить титулованную границу на JPanel.Вот мой код и исключение:
user=> (import '(javax.swing JComponent JPanel BorderFactory))
javax.swing.BorderFactory
user=> (JPanel. (.setBorder (.createTitledBorder "Title")))
#<CompilerException java.lang.IllegalArgumentException: No matching field found: createTitledBorder for class java.lang.String (NO_SOURCE_FILE:785)>
Где я могу найти правила для решения подобных ситуаций?Как всегда, ваша помощь будет высоко оценена.
Я благодарю всех вас за ваши ответы и разъяснения.Я публикую основы этой функции, чтобы мы все знали, к чему обращаться:
(import '(javax.swing JComponent JButton JFrame JLabel JPanel BorderFactory))
(use '(clojure.contrib [miglayout :only (miglayout)]))
(defn cm_dlg []
(let
[
panel_0
(miglayout
(JPanel.)
:layout [:wrap 2]
(JLabel. "Some Text:") [:align "right"]
(JLabel. "More Text:") [:align "left"]
(JLabel. "Some Text:") [:align "right"]
(JLabel. "More Text:") [:align "left"]
(JLabel. "Some Text:") [:align "right"]
(JLabel. "More Text:") [:align "left"]
(JLabel. "Some Text:") [:align "right"]
(JLabel. "More Text:") [:align "left"]
)
panel_1
(miglayout
(JPanel.)
:layout [:wrap]
(JButton. "Button0") [:align "center"]
(JButton. "Button1") [:align "center"]
(JButton. "Button2") [:align "center"]
(JButton. "Button3") [:align "center"]
)
frame (JFrame. "Frame")
]
(doto frame
(.setDefaultCloseOperation JFrame/DISPOSE_ON_CLOSE)
(-> .getContentPane
(.add (miglayout (JPanel.)
:layout [:flowy]
panel_0 [:align "center"]
panel_1 [:align "center"]
)))
(.pack)
(.setVisible true))))
Подобно тому, что функция работает без проблем, но я пытаюсь установить TitledBorder на panel_0.Следуя вашим инструкциям, я пытался писать по-разному, но пока безуспешно.
Еще раз спасибо всем за помощь.
ОБНОВЛЕНИЕ: Извините, googloplex.Со всем этим беспорядком у меня была другая защита.Да, это работает, как ты и Кугатасан сказали.Я наконец закодировал как:
....
(JButton. "Button3") [:align "center"]
)
tb (BorderFactory/createTitledBorder "Title")
frame (JFrame. "Frame")
]
(.setBorder panel_0 tb)
(doto frame
....
и ЭТО РАБОТАЛО !!!Спасибо всем за то, что уделили нам время.