2017-03-15 90 views
0

我試圖在IntelliJ中實現BorderLayout,並且無法使其工作。它編譯得很好,但是當它運行時,我會看到瀏覽器一秒鐘,然後崩潰。我公司目前擁有的代碼是將組件添加到BorderLayout

Button Next=new Button("Next"); 
    Button Back=new Button("Back"); 
    Container panel1=new Container(); 
    Container panel2=new Container(); 
    home = new Form("Home"); 
    home.setLayout(new BorderLayout()); 
    panel1.setLayout(new BorderLayout()); 
    panel2.setLayout(new BorderLayout()); 
    home.addComponent(BorderLayout.EAST,panel1); 
    home.addComponent(BorderLayout.WEST,panel2); 
    panel1.addComponent(Next); 
    panel2.addComponent(Back); 

我得到它的崩潰是「不能沒有約束參數BorderLayout的容器中添加組件」後的錯誤。我試着研究一個約束參數,並且在IntelliJ中使用BorderLayout,但是我發現的任何文本都沒有幫助或者太難理解。非常感謝!

回答

0

錯誤消息告訴你,如果你想添加一個組件到一個邊界佈局,你必須指定它放在哪裏。在向家中添加組件時,您已經完成了此操作,但是您沒有將組件添加到panel1panel2。您需要添加BorderLayout.EAST(或WEST,或其他)獲得:

panel1.addComponent(BorderLayout.EAST, Next); 
panel2.addComponent(BorderLayout.WEST, Back); 

不過,我覺得你用這個錯誤。你可能不希望在panel1或panel2中使用邊界佈局 - 它們對於默認流佈局很好,所以如果你刪除了panel1/2.setLayout()行,你的代碼應該可以正常工作。

BTW:在java中,我們根本不變量的開始使用大寫字母,所以NextBacknextback。另外,panel1應該是類似nextPanel,而panel2應該是類似於backPanel

要添加一件事 - 沒有人再使用awt。我們都走了(主要是html5)。所以,試試這個擺動,你會得到:

import javax.swing.*; 
... 
JButton next = new JButton("Next"); 
JButton back = new JButton("Back"); 
JFrame home = new JFrame("Home"); 
home.setLayout(new BorderLayout()); 
home.add(back, BorderLayout.WEST); 
home.add(next, BorderLayout.EAST); 
+0

嗨,我試着你的建議,但我仍然遇到同樣的問題。我的新代碼是 –

+0

Button Next = new Button(「Next」); Button Back = new Button(「Back」); Container panel1 = new Container(); Container panel2 = new Container(); //創建並建立家庭表格 home = new Form(「Home」); home.setLayout(new BorderLayout()); panel1.setLayout(new BorderLayout()); panel2.setLayout(new BorderLayout()); home.addComponent(BorderLayout.EAST,panel1); home.addComponent(BorderLayout.WEST,panel2); panel1.addComponent(BorderLayout.EAST,Next); panel2.addComponent(BorderLayout.WEST,Back); –

+0

任何有關錯誤的想法?非常感謝! –