re:
要求:一個JButton,一個JPanel,當我們點擊JButton時,JPanel裡添加一個JButton或者其他組件。
自己使用純程式碼寫的時候,在JButton的MousePressed()函數裡,使用JPanel的add()函數添加組件,最後使用validate()使得JPanel更新後的布局有效,可以實現。
但是,使用netBeans製作介面,然後在JButton的MousePressed()函數內,使用同樣的方法,JPanel裡無法出現JButton。。。不知什麼錯誤。。。
望高手解答!!!
-----------------------------------------------------------------------------------------------------------------------------------------------------
本人也遇到此問題, 後經分析發現了原因以及解決方案:
-->原因: netBeans自動產生代碼時, 將容器的布局管理器設定為GroupLayout, 可在
netBeans自動產生的函數 initComponents()中看到此代碼:
......
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
.......
這導致手動添加
代碼: "mainPanel.add(new JButton("test"));" 後, mainPanel的視圖並沒有任何變化, 組件未添加進去!
-->解決方案: 將mainPane容器l的布局管理器重新設定為JPanel的預設布局管理器: BorderLayout
......
initComponents();
mainPanel.setLayout(new BorderLayout()); //重新設定mainPanel的布局管理器
mainPanel.add(jPanel1, BorderLayout.SOUTH); // okey! 可以看到效果了
......