4

Java Swingの本の第2章で提案されているように、プログラムをAWTからSwingに変更していますが、PanelからJPanelに変更すると、パネルが消えてしまいます。ButtonからJButtonに変更しても、同じことは起こりません。

名前にJを追加するだけで簡単にできるので、バグのようですが、VM(Sun JDK)とWM(Sun JDK)で問題がどこにあるのかわかりません。 xmonad)または私がプログラミングしている方法(ClojureのJavaサポート)。何か案が?

前に述べたように、私はそれをClojure(JDKのLispのような言語)で書いています。これが私のコードです:

(defn main []
  (let [toolbar-frame(Frame。 "Toolbar Example(Swing)")
        カットボタン(JButton。「カット」)
        コピーボタン(JButton。「コピー」)
        貼り付けボタン(JButton。「貼り付け」)
        java-button(JButton。 "Java")
        windows-button(JButton。 "Windows")
        mac-button(JButton。 "Mac")
        モチーフボタン(JButton。「モチーフ」)
        lnf-panel(JPanel。)
        ツールバーパネル(パネル)
        print-listener(プロキシ[ActionListener] []
          (actionPerformed [evt]
            (.getActionCommand evt)))
        ]
      (.addWindowListenerツールバーフレーム
        (プロキシ[WindowAdapter] []
          (windowClosing [e]
            (システム/出口0))))
    ;(doto windows-button(.addActionListener lnf-listener))
    ;(dotoモチーフボタン(.addActionListener lnf-listener))
    ;(doto mac-button(.addActionListener lnf-listener))
    ;(doto java-button(.addActionListener lnf-listener))
    (dotoカットボタン(.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)
      (。モチーフボタンを追加)
      (.setLayout(FlowLayout。FlowLayout/ LEFT)))
    (dotoツールバー-パネル
      (カットボタンを追加)
      (。コピーボタンを追加)
      (。貼り付けボタンを追加)
      (.setLayout(FlowLayout。FlowLayout/ LEFT)))
    (dotoツールバーフレーム
      (.addツールバーパネルBorderLayout / NORTH)
      (.add lnf-panel BorderLayout / SOUTH)
      (.setSize 450 250)
      (.setVisible true))))

ありがとう

4

1 に答える 1

4

レイアウトを設定する前に、子コンポーネントを追加していることに気付きました。最初にレイアウトを設定してみてください。問題は、レイアウトを変更したときにデフォルトの制約情報が失われることである可能性があります。JPanelが表示されない場合は、子要素に合わせて自動サイズ設定されていないことが原因である可能性があります。

また、フレーム(.pack)の代わりに試してください。(.setSize 450 250)

于 2009-10-04T01:59:59.097 に答える