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))))
そのように関数は問題なく動作しますが、私がやろうとしているのは、Panel_0 に TitledBorder を配置することです。あなたの指示に従って、さまざまな方法でコーディングを試みましたが、これまでのところ成功していません。
お世話になりました皆様に改めて感謝申し上げます。
更新:申し訳ありません。このすべての混乱で、私は別の定義を実行していました。はい、あなたとクガササンが言ったように機能します。私は最終的に次のようにコーディングしました:
....
(JButton. "Button3") [:align "center"]
)
tb (BorderFactory/createTitledBorder "Title")
frame (JFrame. "Frame")
]
(.setBorder panel_0 tb)
(doto frame
....
そしてそれはうまくいきました!!! これに時間を割いていただき、ありがとうございます。