我正在将一个程序从AWT更改为Swing,正如Java Swing的书第二章所提出的那样,当我从Panel更改为JPanel时,面板就会消失.当我从Button更改为JButton时,不会发生同样的情况.
这似乎是一个错误,因为这样做似乎很简单 – 只需在名称中添加一个额外的J – 但我不确定问题出在哪里 – 我的VM(Sun JDK),我的WM( xmonad)或者我正在编程的方式(Clojure的Java支持).任何的想法?
如前所述,我在Clojure(JDK的类似lisp的语言)中编写它.这是我的代码:
(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")
lnf-panel (JPanel.)
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))))
谢谢