Я меняю программу с AWT на Swing, как предложено во второй главе книги Java Swing, и панель просто исчезает, когда я делаю переход с Panel на JPanel. То же самое не происходит, когда я перехожу с кнопки на JButton.
Кажется, это ошибка, так как это кажется тривиально простым - просто добавив дополнительный J к имени - но я не уверен, где проблема - с моей виртуальной машиной (Sun JDK), с мой WM (xmonad) или с тем, как я программирую (поддержка Java Clojure). Есть идеи?
Как уже говорилось ранее, я пишу это на Clojure (похожий на шутку язык для JDK). Вот мой код:
(defn main []
(let [toolbar-frame (Frame. "Toolbar Example (Swing)")
cut-button (JButton. "Cut")
copy-button (JButton. "Copy")
paste-button (JButton. "Paste")
java-button (JButton. "Java")
windows-button (JButton. "Windows")
mac-button (JButton. "Mac")
motif-button (JButton. "Motif")
<b>lnf-panel (JPanel.)</b>
toolbar-panel (Panel.)
print-listener (proxy [ActionListener] []
(actionPerformed [evt]
(.getActionCommand evt)))
]
(.addWindowListener toolbar-frame
(proxy [WindowAdapter] []
(windowClosing [e]
(System/exit 0))))
;(doto windows-button (.addActionListener lnf-listener))
;(doto motif-button (.addActionListener lnf-listener))
;(doto mac-button (.addActionListener lnf-listener))
;(doto java-button (.addActionListener lnf-listener))
(doto cut-button (.addActionListener print-listener))
(doto copy-button (.addActionListener print-listener))
(doto paste-button (.addActionListener print-listener))
(doto lnf-panel
(.add windows-button)
(.add java-button)
(.add mac-button)
(.add motif-button)
(.setLayout (FlowLayout. FlowLayout/LEFT)))
(doto toolbar-panel
(.add cut-button)
(.add copy-button)
(.add paste-button)
(.setLayout (FlowLayout. FlowLayout/LEFT)))
(doto toolbar-frame
(.add toolbar-panel BorderLayout/NORTH)
(.add lnf-panel BorderLayout/SOUTH)
(.setSize 450 250)
(.setVisible true))))
Спасибо