如何設定JPanel大小

來源:互聯網
上載者:User

轉自:http://lookbing.iteye.com/blog/518139


最後在做一個俄羅斯方塊的小遊戲,看著視頻做挺簡單的,都是手把手的,一行代碼一行代碼的教.. 自己親自動手做,才發現難,真難.在介面布局這塊就出問題,走不動了. 遊戲主要分三塊顯示區, 主遊戲區,下一個遊戲圖形區,遊戲狀態區(速度,得分) 
    每一個顯示區放在一個JPanel中,用了N種布局方式,顯示出來總有問題. 
1.  BorderLayout的時候,中間地區總是最大,右邊顯示不出介面(右邊大小總是很小,用jpanel.setSize()改變JPANEL大小不管用), 這種布局方式本來就是左右寬度不變,上下高度不變,在視窗改變大小的時候. 
2.  FlowLayout的時候,兩個jpanel顯示出來了,但是只有一丁點小.如上設定大小不管用. 
3.  gridLayout的時候,兩個jpanel總是一樣的大,但是這太不符合遊戲風格了吧,左邊的主遊戲區要大一些才合理. 

   最後不得己,採用絕對位置的方式來布局,勉強算過去了,但是心一直不安,Swing不會這麼菜,布局這麼欄,這點功能都實現不了? 
    在網上搜尋了很久,用Eclipse不斷的嘗試小程式,.終於還是讓我發現了問題的根源.[size=medium]在設定JPanel大小的時候,要用JPanel.setPreferredSize()這個方法才行.哈哈,問題總算是解決了,回去後再改代碼吧.用這個方法改JPanel大小之後,立馬顯示出來效果,大borderLayout中上下左右就可以控制寬度了.哈哈 
    以下是個小小的測試代碼 
[/size] 
   Java代碼    import java.awt.BorderLayout;   import java.awt.Dimension;      import javax.swing.BorderFactory;   import javax.swing.JButton;   import javax.swing.JFrame;   import javax.swing.JLabel;   import javax.swing.JPanel;   import javax.swing.JToolBar;         public class MainFrame extends JFrame{          /**       * @param args       */       public static void main(String[] args) {           // TODO Auto-generated method stub                    MainFrame mai=new MainFrame();                    mai.setLayout(new BorderLayout());                    JToolBar jtoolbar=new JToolBar();                    JLabel jl=new JLabel("state");                    jtoolbar.add(jl);                    JPanel jpanel1=new JPanel();                    JButton jb1=new JButton("North");                                        jpanel1.setPreferredSize(new Dimension(300, 150));//關鍵代碼,設定JPanel的大小                    jpanel1.add(jb1);                     jpanel1.setBorder(BorderFactory.createEtchedBorder());                    JButton jb2=new JButton("Center");                                                            mai.add(jpanel1,BorderLayout.EAST);                    mai.add(jb2,BorderLayout.CENTER);                    mai.add(jtoolbar,BorderLayout.SOUTH);                    mai.setSize(300, 400);                    mai.setVisible(true);                    mai.setDefaultCloseOperation(EXIT_ON_CLOSE);                           }      }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.