Java Swing의 두 번째 장에서 제안 된대로 AWT에서 Swing으로 프로그램을 변경하려고합니다. 패널에서 JPanel로 변경하면 패널이 사라집니다. 버튼을 JButton으로 바꿀 때도 마찬가지입니다.Swing의 JPanel은 AWT의 Panel과 거의 비슷합니까? 이전 위젯이 표시되지 않습니다.
이름에 여분의 J를 추가하는 것만으로 간단 해 보이기 때문에 버그 인 것 같습니다.하지만 VM이 (Sun JDK)와 함께 어디에 문제가 있는지 잘 모르겠습니다. 내 WM (xmonad) 또는 프로그래밍 방식 (Clojure 's Java Support)을 사용하십시오. 어떤 생각?
앞서 언급했듯이 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))))
감사
이상하게도 책에 언급되지 않은 것은 (.pack) 것입니다. 감사! – konr